@etherisc/gif-next 0.0.2-d16f92c-416 → 0.0.2-d18e1c5-511

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 (642) hide show
  1. package/README.md +130 -8
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +525 -342
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +139 -616
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +754 -323
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +228 -124
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +145 -282
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +535 -78
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +408 -0
  54. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  56. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
  58. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  60. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
  64. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
  66. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  68. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  69. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  84. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  85. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +59 -195
  86. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  88. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  90. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  91. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +580 -80
  92. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +398 -75
  94. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  95. package/artifacts/contracts/instance/Instance.sol/Instance.json +590 -218
  96. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  97. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1889 -313
  98. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  100. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  101. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1760 -840
  102. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +392 -274
  104. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +141 -127
  106. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  107. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1298 -1857
  108. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  109. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  110. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  111. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  112. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  113. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  114. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  116. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  117. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  118. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  119. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  120. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  121. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  122. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  123. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  124. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  125. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  126. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  127. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  128. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  129. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  130. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  131. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  132. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +805 -0
  134. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  135. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  136. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  137. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +142 -139
  138. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  139. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
  140. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  141. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +140 -423
  142. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  143. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
  144. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
  146. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  147. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  148. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  149. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  150. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  151. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +569 -265
  152. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +216 -104
  154. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  155. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +383 -53
  156. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  157. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +147 -406
  158. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  159. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
  160. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  161. package/artifacts/contracts/pool/Pool.sol/Pool.json +144 -694
  162. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  163. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  164. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  165. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +925 -545
  166. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
  168. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  169. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
  170. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
  172. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  173. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  174. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  175. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  176. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  177. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
  178. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  179. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
  180. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  181. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
  182. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  183. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
  184. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  185. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +417 -101
  186. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  187. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
  188. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  189. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +282 -271
  190. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  191. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
  192. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  193. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +532 -311
  194. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  195. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  196. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -108
  198. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  199. package/artifacts/contracts/product/PricingService.sol/PricingService.json +249 -329
  200. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
  202. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  203. package/artifacts/contracts/product/Product.sol/Product.json +316 -606
  204. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  205. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  206. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  207. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  208. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  210. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +384 -69
  212. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  213. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +97 -148
  214. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  215. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  216. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  217. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  218. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  219. package/artifacts/contracts/registry/Registry.sol/Registry.json +617 -133
  220. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  221. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +796 -537
  222. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  223. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  224. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  225. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
  226. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  227. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
  228. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  229. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  230. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  231. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  232. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  233. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  234. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  235. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +523 -27
  236. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  237. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  238. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  239. package/artifacts/contracts/shared/Component.sol/Component.json +86 -287
  240. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  241. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +609 -569
  242. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  243. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +197 -131
  244. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  245. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  246. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  248. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  249. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  250. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  251. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  252. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  253. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -103
  254. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  255. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +535 -240
  256. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  257. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +131 -139
  258. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  259. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  260. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  262. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  264. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  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 +84 -2
  269. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  270. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  271. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  272. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +125 -376
  273. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  274. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  275. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  276. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  277. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  278. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
  279. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  280. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  281. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  282. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
  283. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  284. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  285. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  286. package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
  287. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  288. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  289. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  290. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  291. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  292. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  293. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  294. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1513 -204
  295. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  296. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
  297. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  298. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  299. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  300. package/artifacts/contracts/staking/Staking.sol/Staking.json +1635 -465
  301. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  302. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  303. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  304. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +191 -105
  305. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  306. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
  307. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  308. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
  309. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  310. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
  311. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  312. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1637 -801
  313. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  314. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  315. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  316. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +184 -76
  317. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  318. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  319. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Amount.sol/AmountLib.json +63 -10
  321. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  323. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  324. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  325. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  327. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  329. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  331. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  332. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  333. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  334. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  335. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  337. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  338. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  339. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +61 -9
  341. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  343. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  345. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  347. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
  348. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
  349. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  350. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  351. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  352. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -91
  353. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  354. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +112 -2
  355. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  356. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  357. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  358. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  359. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  360. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  361. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  362. package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
  363. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  364. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +56 -5
  365. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  366. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  367. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  368. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  369. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  370. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  371. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  372. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  373. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  374. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  375. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  376. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  377. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  378. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  379. package/contracts/accounting/AccountingService.sol +274 -0
  380. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  381. package/contracts/accounting/IAccountingService.sol +47 -0
  382. package/contracts/authorization/AccessAdmin.sol +780 -0
  383. package/contracts/authorization/AccessAdminLib.sol +396 -0
  384. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  385. package/contracts/authorization/Authorization.sol +169 -0
  386. package/contracts/authorization/IAccess.sol +67 -0
  387. package/contracts/authorization/IAccessAdmin.sol +144 -0
  388. package/contracts/authorization/IAuthorization.sol +26 -0
  389. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  390. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  391. package/contracts/distribution/BasicDistribution.sol +140 -0
  392. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  393. package/contracts/distribution/Distribution.sol +125 -141
  394. package/contracts/distribution/DistributionService.sol +284 -133
  395. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  396. package/contracts/distribution/IDistributionComponent.sol +21 -42
  397. package/contracts/distribution/IDistributionService.sol +60 -26
  398. package/contracts/examples/fire/DamageLevel.sol +59 -0
  399. package/contracts/examples/fire/FirePool.sol +86 -0
  400. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  401. package/contracts/examples/fire/FireProduct.sol +433 -0
  402. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  403. package/contracts/examples/fire/FireUSD.sol +26 -0
  404. package/contracts/examples/flight/FlightLib.sol +279 -0
  405. package/contracts/examples/flight/FlightOracle.sol +167 -0
  406. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  407. package/contracts/examples/flight/FlightPool.sol +89 -0
  408. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  409. package/contracts/examples/flight/FlightProduct.sol +470 -0
  410. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  411. package/contracts/examples/flight/FlightUSD.sol +26 -0
  412. package/contracts/examples/flight/originalV1.sol +396 -0
  413. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  414. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  415. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  416. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  417. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  418. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  419. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  420. package/contracts/instance/BaseStore.sol +93 -0
  421. package/contracts/instance/BundleSet.sol +130 -0
  422. package/contracts/instance/IBaseStore.sol +37 -0
  423. package/contracts/instance/IInstance.sol +118 -49
  424. package/contracts/instance/IInstanceService.sol +68 -46
  425. package/contracts/instance/Instance.sol +221 -133
  426. package/contracts/instance/InstanceAdmin.sol +297 -249
  427. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  428. package/contracts/instance/InstanceReader.sol +498 -256
  429. package/contracts/instance/InstanceService.sol +340 -265
  430. package/contracts/instance/InstanceServiceManager.sol +8 -13
  431. package/contracts/instance/InstanceStore.sol +163 -109
  432. package/contracts/instance/ProductStore.sol +290 -0
  433. package/contracts/instance/RiskSet.sol +126 -0
  434. package/contracts/instance/TargetNames.sol +10 -0
  435. package/contracts/instance/base/BalanceStore.sol +4 -6
  436. package/contracts/instance/base/ObjectCounter.sol +1 -2
  437. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  438. package/contracts/instance/base/ObjectSet.sol +77 -0
  439. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  440. package/contracts/instance/module/IBundle.sol +6 -5
  441. package/contracts/instance/module/IComponents.sol +29 -21
  442. package/contracts/instance/module/IDistribution.sol +21 -9
  443. package/contracts/instance/module/IPolicy.sol +50 -29
  444. package/contracts/instance/module/IRisk.sol +5 -0
  445. package/contracts/mock/Dip.sol +1 -1
  446. package/contracts/oracle/BasicOracle.sol +44 -0
  447. package/contracts/oracle/BasicOracleAuthorization.sol +52 -0
  448. package/contracts/oracle/IOracle.sol +25 -4
  449. package/contracts/oracle/IOracleComponent.sol +2 -1
  450. package/contracts/oracle/IOracleService.sol +14 -13
  451. package/contracts/oracle/Oracle.sol +60 -53
  452. package/contracts/oracle/OracleService.sol +119 -87
  453. package/contracts/oracle/OracleServiceManager.sol +8 -11
  454. package/contracts/pool/BasicPool.sol +161 -0
  455. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  456. package/contracts/pool/BundleService.sol +222 -132
  457. package/contracts/pool/BundleServiceManager.sol +8 -11
  458. package/contracts/pool/IBundleService.sol +43 -33
  459. package/contracts/pool/IPoolComponent.sol +20 -70
  460. package/contracts/pool/IPoolService.sol +97 -77
  461. package/contracts/pool/Pool.sol +196 -164
  462. package/contracts/pool/PoolLib.sol +341 -0
  463. package/contracts/pool/PoolService.sol +419 -257
  464. package/contracts/pool/PoolServiceManager.sol +6 -9
  465. package/contracts/product/ApplicationService.sol +154 -81
  466. package/contracts/product/ApplicationServiceManager.sol +6 -6
  467. package/contracts/product/BasicProduct.sol +48 -0
  468. package/contracts/product/BasicProductAuthorization.sol +64 -0
  469. package/contracts/product/ClaimService.sol +391 -207
  470. package/contracts/product/ClaimServiceManager.sol +6 -6
  471. package/contracts/product/IApplicationService.sol +29 -3
  472. package/contracts/product/IClaimService.sol +48 -11
  473. package/contracts/product/IPolicyService.sol +61 -37
  474. package/contracts/product/IPricingService.sol +11 -10
  475. package/contracts/product/IProductComponent.sol +29 -9
  476. package/contracts/product/IRiskService.sol +48 -0
  477. package/contracts/product/PolicyService.sol +445 -275
  478. package/contracts/product/PolicyServiceLib.sol +139 -0
  479. package/contracts/product/PolicyServiceManager.sol +6 -9
  480. package/contracts/product/PricingService.sol +90 -84
  481. package/contracts/product/PricingServiceManager.sol +6 -9
  482. package/contracts/product/Product.sol +261 -147
  483. package/contracts/product/RiskService.sol +189 -0
  484. package/contracts/product/RiskServiceManager.sol +39 -0
  485. package/contracts/registry/ChainNft.sol +72 -40
  486. package/contracts/registry/IRegistry.sol +84 -36
  487. package/contracts/registry/IRegistryService.sol +3 -10
  488. package/contracts/registry/IRelease.sol +29 -0
  489. package/contracts/registry/ITransferInterceptor.sol +1 -2
  490. package/contracts/registry/Registry.sol +378 -224
  491. package/contracts/registry/RegistryAdmin.sol +119 -261
  492. package/contracts/registry/RegistryAuthorization.sol +336 -0
  493. package/contracts/registry/RegistryService.sol +42 -67
  494. package/contracts/registry/RegistryServiceManager.sol +5 -5
  495. package/contracts/registry/ReleaseAdmin.sol +195 -0
  496. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  497. package/contracts/registry/ReleaseRegistry.sol +525 -0
  498. package/contracts/registry/ServiceAuthorizationV3.sol +213 -71
  499. package/contracts/registry/TokenRegistry.sol +61 -59
  500. package/contracts/shared/Component.sol +71 -142
  501. package/contracts/shared/ComponentService.sol +459 -385
  502. package/contracts/shared/ComponentServiceManager.sol +10 -7
  503. package/contracts/shared/ContractLib.sol +312 -0
  504. package/contracts/shared/IComponent.sol +6 -18
  505. package/contracts/shared/IComponentService.sol +50 -41
  506. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  507. package/contracts/shared/ILifecycle.sol +3 -2
  508. package/contracts/shared/INftOwnable.sol +4 -0
  509. package/contracts/shared/IPolicyHolder.sol +12 -22
  510. package/contracts/shared/IRegisterable.sol +22 -1
  511. package/contracts/shared/IService.sol +4 -6
  512. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  513. package/contracts/shared/InstanceLinkedComponent.sol +145 -57
  514. package/contracts/shared/Lifecycle.sol +30 -72
  515. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  516. package/contracts/shared/NftOwnable.sol +33 -11
  517. package/contracts/shared/PolicyHolder.sol +20 -59
  518. package/contracts/shared/Registerable.sol +52 -21
  519. package/contracts/shared/RegistryLinked.sol +9 -14
  520. package/contracts/shared/Service.sol +22 -38
  521. package/contracts/shared/TokenHandler.sol +310 -26
  522. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  523. package/contracts/staking/IStaking.sol +272 -73
  524. package/contracts/staking/IStakingService.sol +48 -74
  525. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  526. package/contracts/staking/Staking.sol +534 -250
  527. package/contracts/staking/StakingLib.sol +195 -0
  528. package/contracts/staking/StakingManager.sol +14 -15
  529. package/contracts/staking/StakingReader.sol +72 -88
  530. package/contracts/staking/StakingService.sol +62 -152
  531. package/contracts/staking/StakingServiceManager.sol +9 -7
  532. package/contracts/staking/StakingStore.sol +1096 -341
  533. package/contracts/staking/TargetHandler.sol +132 -0
  534. package/contracts/staking/TargetManagerLib.sol +73 -46
  535. package/contracts/type/Amount.sol +31 -5
  536. package/contracts/type/Blocknumber.sol +22 -16
  537. package/contracts/type/ChainId.sol +101 -0
  538. package/contracts/type/ClaimId.sol +6 -1
  539. package/contracts/type/Fee.sol +8 -8
  540. package/contracts/type/Key32.sol +2 -2
  541. package/contracts/type/Key32Set.sol +62 -0
  542. package/contracts/type/NftId.sol +7 -0
  543. package/contracts/type/ObjectType.sol +91 -54
  544. package/contracts/type/PayoutId.sol +10 -10
  545. package/contracts/type/Referral.sol +7 -0
  546. package/contracts/type/RequestIdSet.sol +62 -0
  547. package/contracts/type/RiskId.sol +38 -6
  548. package/contracts/type/RoleId.sol +93 -114
  549. package/contracts/type/Seconds.sol +44 -1
  550. package/contracts/type/Selector.sol +5 -0
  551. package/contracts/type/StateId.sol +15 -1
  552. package/contracts/type/String.sol +42 -0
  553. package/contracts/type/Timestamp.sol +24 -8
  554. package/contracts/type/UFixed.sol +62 -125
  555. package/contracts/type/Version.sol +57 -6
  556. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  557. package/contracts/{shared → upgradeability}/ProxyManager.sol +96 -49
  558. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  559. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  560. package/package.json +9 -6
  561. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  562. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  563. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  564. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  565. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  566. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  567. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  569. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  570. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
  571. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  572. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  573. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  574. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  575. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  576. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +0 -129
  577. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  578. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  579. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  580. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  581. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  582. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  583. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  584. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  585. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  586. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  587. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  588. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  589. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  590. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  591. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  592. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  593. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  594. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  595. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  596. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  597. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  598. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  599. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  600. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  601. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  602. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  603. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  604. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  605. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  606. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -571
  607. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  608. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  609. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  610. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  611. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  612. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  613. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  614. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  615. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
  616. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  617. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  618. package/contracts/instance/BundleManager.sol +0 -126
  619. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  620. package/contracts/instance/base/ObjectManager.sol +0 -80
  621. package/contracts/instance/module/IAccess.sol +0 -46
  622. package/contracts/product/IProductService.sol +0 -33
  623. package/contracts/product/ProductService.sol +0 -124
  624. package/contracts/product/ProductServiceManager.sol +0 -42
  625. package/contracts/registry/IServiceAuthorization.sol +0 -35
  626. package/contracts/registry/ReleaseManager.sol +0 -527
  627. package/contracts/registry/ServiceAuthorization.sol +0 -86
  628. package/contracts/shared/AccessAdmin.sol +0 -759
  629. package/contracts/shared/AccessManagerCustom.sol +0 -741
  630. package/contracts/shared/AccessManagerExtended.sol +0 -481
  631. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  632. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  633. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  634. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  635. package/contracts/shared/IAccessAdmin.sol +0 -168
  636. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  637. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  638. package/contracts/shared/IKeyValueStore.sol +0 -53
  639. package/contracts/shared/InitializableCustom.sol +0 -177
  640. package/contracts/shared/KeyValueStore.sol +0 -127
  641. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  642. package/contracts/staking/StakeManagerLib.sol +0 -231
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {PoolService} from "./PoolService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract PoolServiceManager is ProxyManager {
12
9
 
@@ -15,14 +12,14 @@ contract PoolServiceManager is ProxyManager {
15
12
  /// @dev initializes proxy manager with pool service implementation
16
13
  constructor(
17
14
  address authority,
18
- address registryAddress,
15
+ address registry,
19
16
  bytes32 salt
20
17
  )
21
- ProxyManager(registryAddress)
22
18
  {
23
19
  PoolService poolSrv = new PoolService{salt: salt}();
24
- bytes memory data = abi.encode(registryAddress, address(this), authority);
25
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
26
23
  address(poolSrv),
27
24
  data,
28
25
  salt);
@@ -1,55 +1,31 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IApplicationService} from "./IApplicationService.sol";
5
+ import {IComponents} from "../instance/module/IComponents.sol";
6
+ import {IInstance} from "../instance/IInstance.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IPolicy} from "../instance/module/IPolicy.sol";
9
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
10
+ import {IPricingService} from "./IPricingService.sol";
11
+ import {IRegistryService} from "../registry/IRegistryService.sol";
12
+
4
13
  import {AmountLib} from "../type/Amount.sol";
14
+ import {ContractLib} from "../shared/ContractLib.sol";
5
15
  import {Seconds} from "../type/Seconds.sol";
6
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
7
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
8
- import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
9
- import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, REGISTRY, APPLICATION, POLICY, BUNDLE, PRICE} from "../type/ObjectType.sol";
10
- import {APPLIED, REVOKED, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
16
+ import {zeroTimestamp} from "../type/Timestamp.sol";
17
+ import {ObjectType, BUNDLE, DISTRIBUTION, PRODUCT, REGISTRY, APPLICATION, POLICY, PRICE} from "../type/ObjectType.sol";
18
+ import {REVOKED} from "../type/StateId.sol";
11
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
12
- import {Fee, FeeLib} from "../type/Fee.sol";
13
20
  import {ReferralId} from "../type/Referral.sol";
14
21
  import {RiskId} from "../type/RiskId.sol";
15
- import {StateId} from "../type/StateId.sol";
16
- import {Version, VersionLib} from "../type/Version.sol";
17
22
  import {Amount, AmountLib} from "../type/Amount.sol";
18
-
19
- import {TokenHandler} from "../shared/TokenHandler.sol";
20
- import {IVersionable} from "../shared/IVersionable.sol";
21
- import {Versionable} from "../shared/Versionable.sol";
22
- import {IService} from "../shared/IService.sol";
23
23
  import {Service} from "../shared/Service.sol";
24
-
25
- import {IRegistry} from "../registry/IRegistry.sol";
26
-
27
- import {IProductComponent} from "./IProductComponent.sol";
28
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
29
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
30
- import {Product} from "./Product.sol";
31
-
32
- import {IComponents} from "../instance/module/IComponents.sol";
33
- import {IPolicy} from "../instance/module/IPolicy.sol";
34
- import {IRisk} from "../instance/module/IRisk.sol";
35
- import {IBundle} from "../instance/module/IBundle.sol";
36
- import {IProductService} from "./IProductService.sol";
37
-
38
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
39
-
40
- import {IInstance} from "../instance/IInstance.sol";
41
24
  import {InstanceReader} from "../instance/InstanceReader.sol";
42
25
 
43
- import {IApplicationService} from "./IApplicationService.sol";
44
- import {IBundleService} from "../pool/IBundleService.sol";
45
- import {IDistributionService} from "../distribution/IDistributionService.sol";
46
- import {IPoolService} from "../pool/IPoolService.sol";
47
- import {IPricingService} from "./IPricingService.sol";
48
- import {IRegistryService} from "../registry/IRegistryService.sol";
49
-
50
26
 
51
27
  contract ApplicationService is
52
- ComponentVerifyingService,
28
+ Service,
53
29
  IApplicationService
54
30
  {
55
31
  IDistributionService private _distributionService;
@@ -65,25 +41,24 @@ contract ApplicationService is
65
41
  initializer()
66
42
  {
67
43
  (
68
- address registryAddress,,
69
- //address managerAddress
70
- address authority
71
- ) = abi.decode(data, (address, address, address));
44
+ address authority,
45
+ address registry
46
+ ) = abi.decode(data, (address, address));
72
47
 
73
- initializeService(registryAddress, address(0), owner);
48
+ __Service_init(authority, registry, owner);
74
49
 
75
50
  _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
76
51
  _pricingService = IPricingService(_getServiceAddress(PRICE()));
77
52
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
78
53
 
79
- registerInterface(type(IApplicationService).interfaceId);
54
+ _registerInterface(type(IApplicationService).interfaceId);
80
55
  }
81
56
 
82
57
 
83
- function _checkLinkedpplicationParameters(
58
+ function _checkLinkedApplicationParameters(
84
59
  InstanceReader instanceReader,
85
60
  NftId productNftId,
86
- RiskId rirskId,
61
+ RiskId riskId,
87
62
  ReferralId referralId,
88
63
  NftId bundleNftId
89
64
  )
@@ -91,17 +66,32 @@ contract ApplicationService is
91
66
  virtual
92
67
  view
93
68
  {
94
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
95
-
96
- // TODO check riskId with product
97
-
98
- // TODO check referral with distribution
69
+ // check risk with product
70
+ (bool exists, bool active) = instanceReader.getRiskSet().checkRisk(productNftId, riskId);
71
+ if (!exists) { revert ErrorApplicationServiceRiskUnknown(riskId, productNftId); }
72
+ if (!active) { revert ErrorApplicationServiceRiskLocked(riskId, productNftId); }
73
+
74
+ NftId riskProductNftId = instanceReader.getRiskInfo(riskId).productNftId;
75
+ if (productNftId != riskProductNftId) {
76
+ revert ErrorApplicationServiceRiskProductMismatch(riskId, riskProductNftId, productNftId);
77
+ }
99
78
 
100
79
  // check bundle with pool
101
- NftId productPoolNftId = productInfo.poolNftId;
102
- NftId bundlePoolNftId = instanceReader.getBundleInfo(bundleNftId).poolNftId;
103
- if(bundlePoolNftId != productPoolNftId) {
104
- revert ErrorApplicationServiceBundlePoolMismatch(bundleNftId, productPoolNftId, bundlePoolNftId);
80
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
81
+ {
82
+ NftId poolNftId = productInfo.poolNftId;
83
+ (exists, active) = instanceReader.getBundleSet().checkBundle(poolNftId, bundleNftId);
84
+ if (!exists) { revert ErrorApplicationServiceBundleUnknown(bundleNftId, poolNftId); }
85
+ if (!active) { revert ErrorApplicationServiceBundleLocked(bundleNftId, poolNftId); }
86
+ }
87
+
88
+ // check referral with distribution
89
+ {
90
+ if (productInfo.hasDistribution && ! referralId.eqz()) {
91
+ if (!_distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
92
+ revert ErrorApplicationServiceReferralInvalid(productNftId, productInfo.distributionNftId, referralId);
93
+ }
94
+ }
105
95
  }
106
96
  }
107
97
 
@@ -135,8 +125,7 @@ contract ApplicationService is
135
125
  view
136
126
  returns (Amount premiumAmount)
137
127
  {
138
- return AmountLib.toAmount(
139
- _pricingService.calculatePremium(
128
+ return _pricingService.calculatePremium(
140
129
  info.productNftId,
141
130
  info.riskId,
142
131
  info.sumInsuredAmount,
@@ -144,7 +133,7 @@ contract ApplicationService is
144
133
  info.applicationData,
145
134
  info.bundleNftId,
146
135
  info.referralId
147
- ).premiumAmount);
136
+ ).premiumAmount;
148
137
  }
149
138
 
150
139
 
@@ -152,6 +141,7 @@ contract ApplicationService is
152
141
  address applicationOwner,
153
142
  RiskId riskId,
154
143
  Amount sumInsuredAmount,
144
+ Amount premiumAmount,
155
145
  Seconds lifetime,
156
146
  NftId bundleNftId,
157
147
  ReferralId referralId,
@@ -159,13 +149,17 @@ contract ApplicationService is
159
149
  )
160
150
  external
161
151
  virtual
152
+ restricted()
153
+ nonReentrant()
162
154
  returns (NftId applicationNftId)
163
155
  {
164
- (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
156
+ _checkNftType(bundleNftId, BUNDLE());
157
+
158
+ (NftId productNftId, IInstance instance) = _getAndVerifyActiveProduct();
165
159
 
166
160
  // check if provided references are valid and linked to calling product contract
167
161
  InstanceReader instanceReader = instance.getInstanceReader();
168
- _checkLinkedpplicationParameters(
162
+ _checkLinkedApplicationParameters(
169
163
  instanceReader,
170
164
  productNftId,
171
165
  riskId,
@@ -176,14 +170,66 @@ contract ApplicationService is
176
170
  applicationNftId = _registerApplication(productNftId, applicationOwner);
177
171
 
178
172
  // create policy info for application
179
- IPolicy.PolicyInfo memory applicationInfo = IPolicy.PolicyInfo({
173
+ IPolicy.PolicyInfo memory applicationInfo = _createApplicationInfo(
174
+ productNftId,
175
+ riskId,
176
+ sumInsuredAmount,
177
+ premiumAmount,
178
+ lifetime,
179
+ bundleNftId,
180
+ referralId,
181
+ applicationData);
182
+
183
+ // register application with instance
184
+ instance.getProductStore().createApplication(
185
+ applicationNftId,
186
+ applicationInfo);
187
+
188
+ _emitApplicationCreatedEvent(applicationNftId, applicationOwner, applicationInfo);
189
+ }
190
+
191
+ function _emitApplicationCreatedEvent(
192
+ NftId applicationNftId,
193
+ address applicationOwner,
194
+ IPolicy.PolicyInfo memory applicationInfo
195
+ )
196
+ internal
197
+ virtual
198
+ {
199
+ emit LogApplicationServiceApplicationCreated(
200
+ applicationNftId,
201
+ applicationInfo.productNftId,
202
+ applicationInfo.bundleNftId,
203
+ applicationInfo.riskId,
204
+ applicationInfo.referralId,
205
+ applicationOwner,
206
+ applicationInfo.sumInsuredAmount,
207
+ applicationInfo.premiumAmount,
208
+ applicationInfo.lifetime
209
+ );
210
+ }
211
+
212
+ function _createApplicationInfo(
213
+ NftId productNftId,
214
+ RiskId riskId,
215
+ Amount sumInsuredAmount,
216
+ Amount premiumAmount,
217
+ Seconds lifetime,
218
+ NftId bundleNftId,
219
+ ReferralId referralId,
220
+ bytes memory applicationData
221
+ )
222
+ internal
223
+ virtual
224
+ returns (IPolicy.PolicyInfo memory applicationInfo)
225
+ {
226
+ return IPolicy.PolicyInfo({
180
227
  productNftId: productNftId,
181
228
  bundleNftId: bundleNftId,
182
229
  referralId: referralId,
183
230
  riskId: riskId,
184
231
  sumInsuredAmount: sumInsuredAmount,
185
- premiumAmount: AmountLib.zero(),
186
- premiumPaidAmount: AmountLib.zero(),
232
+ premiumAmount: premiumAmount,
187
233
  lifetime: lifetime,
188
234
  applicationData: applicationData,
189
235
  processData: "",
@@ -195,30 +241,24 @@ contract ApplicationService is
195
241
  expiredAt: zeroTimestamp(),
196
242
  closedAt: zeroTimestamp()
197
243
  });
198
-
199
- // TODO consider to provide this amount externally
200
- // actual calculation is done 2nd time anyway for premium collection
201
- // calculate premium amount
202
- applicationInfo.premiumAmount = _calculatePremiumAmount(applicationInfo);
203
-
204
- // register application with instance
205
- instance.getInstanceStore().createApplication(
206
- applicationNftId,
207
- applicationInfo);
208
-
209
- // TODO: add logging
210
244
  }
211
245
 
212
-
213
246
  function renew(
214
247
  NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
215
248
  NftId bundleNftId // will likely need a newer bundle for underwriting
216
249
  )
217
250
  external
218
- virtual override
251
+ virtual
252
+ restricted()
253
+ nonReentrant()
219
254
  returns (NftId applicationNftId)
220
255
  {
256
+ _checkNftType(policyNftId, POLICY());
257
+ _checkNftType(bundleNftId, BUNDLE());
258
+
259
+ // TODO: implement
221
260
 
261
+ emit LogApplicationServiceApplicationRenewed(policyNftId, bundleNftId);
222
262
  }
223
263
 
224
264
 
@@ -232,21 +272,54 @@ contract ApplicationService is
232
272
  bytes memory applicationData
233
273
  )
234
274
  external
235
- virtual override
275
+ virtual
276
+ restricted()
277
+ nonReentrant()
236
278
  {
279
+ _checkNftType(applicationNftId, POLICY());
280
+ _checkNftType(bundleNftId, BUNDLE());
237
281
 
282
+ // TODO: implement
283
+
284
+ emit LogApplicationServiceApplicationAdjusted(applicationNftId, bundleNftId, riskId, referralId, sumInsuredAmount, lifetime);
238
285
  }
239
286
 
240
287
  function revoke(NftId applicationNftId)
241
288
  external
242
- virtual override
289
+ virtual
290
+ restricted()
291
+ nonReentrant()
243
292
  {
244
- (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
245
- instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
293
+ _checkNftType(applicationNftId, POLICY());
294
+
295
+ (, IInstance instance) = _getAndVerifyActiveProduct();
296
+ instance.getProductStore().updateApplicationState(applicationNftId, REVOKED());
297
+ emit LogApplicationServiceApplicationRevoked(applicationNftId);
246
298
  }
247
299
 
248
300
  // internal functions
249
301
 
302
+ function _getAndVerifyActiveProduct()
303
+ internal
304
+ view
305
+ returns (
306
+ NftId productNftId,
307
+ IInstance instance
308
+ )
309
+ {
310
+ (
311
+ IRegistry.ObjectInfo memory info,
312
+ address instanceAddress
313
+ ) = ContractLib.getAndVerifyComponent(
314
+ getRegistry(),
315
+ msg.sender,
316
+ PRODUCT(),
317
+ true); // only active pools
318
+
319
+ productNftId = info.nftId;
320
+ instance = IInstance(instanceAddress);
321
+ }
322
+
250
323
 
251
324
  function _getDomain() internal pure override returns(ObjectType) {
252
325
  return APPLICATION();
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {ApplicationService} from "./ApplicationService.sol";
7
7
 
8
8
  contract ApplicationServiceManager is ProxyManager {
@@ -12,14 +12,14 @@ contract ApplicationServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
19
  ApplicationService svc = new ApplicationService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
23
  address(svc),
24
24
  data,
25
25
  salt);
@@ -0,0 +1,48 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Fee} from "../type/Fee.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {Product} from "../product/Product.sol";
9
+
10
+ abstract contract BasicProduct is
11
+ Product
12
+ {
13
+
14
+ function setFees(
15
+ Fee memory productFee,
16
+ Fee memory processingFee
17
+ )
18
+ external
19
+ virtual
20
+ onlyOwner()
21
+ restricted()
22
+ {
23
+ _setFees(productFee, processingFee);
24
+ }
25
+
26
+ function _initializeBasicProduct(
27
+ address registry,
28
+ NftId instanceNftId,
29
+ string memory name,
30
+ IComponents.ProductInfo memory productInfo,
31
+ IComponents.FeeInfo memory feeInfo,
32
+ IAuthorization authorization,
33
+ address initialOwner
34
+ )
35
+ internal
36
+ virtual
37
+ onlyInitializing()
38
+ {
39
+ __Product_init(
40
+ registry,
41
+ instanceNftId,
42
+ name,
43
+ productInfo,
44
+ feeInfo,
45
+ authorization,
46
+ initialOwner);
47
+ }
48
+ }
@@ -0,0 +1,64 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
6
+ import {IProductComponent} from "./IProductComponent.sol";
7
+
8
+ import {Authorization} from "../authorization/Authorization.sol";
9
+ import {BasicProduct} from "./BasicProduct.sol";
10
+ import {COMPONENT, ORACLE, PRODUCT, POLICY} from "../type/ObjectType.sol";
11
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
12
+ import {TokenHandler} from "../shared/TokenHandler.sol";
13
+
14
+
15
+ contract BasicProductAuthorization
16
+ is Authorization
17
+ {
18
+ constructor(string memory componentName)
19
+ Authorization(
20
+ componentName,
21
+ PRODUCT(),
22
+ 3,
23
+ COMMIT_HASH,
24
+ true,
25
+ true)
26
+ {}
27
+
28
+ function _setupServiceTargets()
29
+ internal
30
+ virtual override
31
+ {
32
+ _authorizeServiceDomain(COMPONENT(), address(10));
33
+ _authorizeServiceDomain(ORACLE(), address(11));
34
+ _authorizeServiceDomain(POLICY(), address(12));
35
+ }
36
+
37
+ function _setupTokenHandlerAuthorizations() internal virtual override {
38
+ // authorize token handler functions for component service role
39
+ IAccess.FunctionInfo[] storage functions;
40
+ functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(COMPONENT()));
41
+ _authorize(functions, TokenHandler.approve.selector, "approve");
42
+ _authorize(functions, TokenHandler.setWallet.selector, "setWallet");
43
+ _authorize(functions, TokenHandler.pushFeeToken.selector, "pushFeeToken");
44
+
45
+ // authorize token handler functions for pool service role
46
+ functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(POLICY()));
47
+ _authorize(functions, TokenHandler.pullToken.selector, "pullToken");
48
+ _authorize(functions, TokenHandler.pushToken.selector, "pushToken");
49
+ }
50
+
51
+ function _setupTargetAuthorizations()
52
+ internal
53
+ virtual override
54
+ {
55
+ IAccess.FunctionInfo[] storage functions;
56
+
57
+ // authorize public role (open access to any account, only allows to lock target)
58
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
59
+ _authorize(functions, BasicProduct.setFees.selector, "setFees");
60
+ _authorize(functions, IProductComponent.registerComponent.selector, "registerComponent");
61
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
62
+ }
63
+ }
64
+