@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f13fd28-503

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 (462) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +148 -62
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -21
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +82 -12
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -13
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -108
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
  38. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +101 -164
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +152 -33
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -33
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +137 -129
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +641 -310
  60. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  62. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +118 -39
  64. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
  66. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  67. package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -56
  68. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +362 -99
  70. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
  72. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +550 -224
  74. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
  76. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
  78. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
  80. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  82. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  84. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  85. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  87. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  89. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  91. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  92. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  93. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  98. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -35
  103. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  115. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +152 -33
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  123. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +164 -217
  128. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  129. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  130. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  131. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -353
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -33
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
  162. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  163. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  164. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +76 -50
  166. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  167. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  168. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  170. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  171. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  172. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  173. package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
  174. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
  176. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  178. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
  180. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  181. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  182. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  183. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  184. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  185. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/Registry.sol/Registry.json +88 -40
  187. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +262 -220
  189. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  191. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  193. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  194. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  195. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  197. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +318 -52
  199. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  201. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  203. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  204. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  205. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -439
  207. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -64
  209. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  211. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  213. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  215. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  216. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  219. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  221. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +125 -282
  223. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  225. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  226. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  227. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  231. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  234. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  235. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  236. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  237. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  238. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  239. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  240. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  241. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  242. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  243. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  244. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  245. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  246. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  247. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  248. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  249. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  250. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  252. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
  253. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  254. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  255. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  256. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
  257. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  258. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +65 -83
  259. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  260. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +98 -3
  261. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  262. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -33
  263. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  264. package/artifacts/contracts/staking/Staking.sol/Staking.json +145 -176
  265. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  267. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +62 -46
  269. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
  271. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +151 -49
  273. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +51 -25
  275. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  277. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  278. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  279. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  280. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  282. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  285. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  287. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  289. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  291. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  292. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  293. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  295. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  296. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  297. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  299. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  301. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  303. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  305. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  307. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  309. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  312. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  314. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  318. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  320. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  322. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  324. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  325. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  326. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  327. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  328. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  329. package/contracts/accounting/AccountingService.sol +262 -0
  330. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  331. package/contracts/accounting/IAccountingService.sol +45 -0
  332. package/contracts/authorization/AccessAdmin.sol +177 -84
  333. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  334. package/contracts/authorization/Authorization.sol +277 -229
  335. package/contracts/authorization/IAccessAdmin.sol +13 -7
  336. package/contracts/authorization/IAuthorization.sol +15 -1
  337. package/contracts/distribution/BasicDistribution.sol +6 -6
  338. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  339. package/contracts/distribution/Distribution.sol +32 -30
  340. package/contracts/distribution/DistributionService.sol +36 -34
  341. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  342. package/contracts/distribution/IDistributionService.sol +5 -6
  343. package/contracts/examples/fire/FirePool.sol +22 -5
  344. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  345. package/contracts/examples/fire/FireProduct.sol +31 -8
  346. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  347. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  348. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  349. package/contracts/examples/unpermissioned/SimplePool.sol +33 -3
  350. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  351. package/contracts/examples/unpermissioned/SimpleProduct.sol +47 -21
  352. package/contracts/instance/BundleSet.sol +42 -38
  353. package/contracts/instance/IInstance.sol +13 -9
  354. package/contracts/instance/IInstanceService.sol +9 -9
  355. package/contracts/instance/Instance.sol +33 -18
  356. package/contracts/instance/InstanceAdmin.sol +247 -84
  357. package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
  358. package/contracts/instance/InstanceReader.sol +162 -32
  359. package/contracts/instance/InstanceService.sol +73 -82
  360. package/contracts/instance/InstanceServiceManager.sol +1 -1
  361. package/contracts/instance/InstanceStore.sol +13 -2
  362. package/contracts/instance/RiskSet.sol +118 -0
  363. package/contracts/instance/base/ObjectCounter.sol +1 -2
  364. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  365. package/contracts/instance/base/ObjectSet.sol +31 -33
  366. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  367. package/contracts/instance/module/IComponents.sol +4 -4
  368. package/contracts/instance/module/IPolicy.sol +2 -1
  369. package/contracts/instance/module/IRisk.sol +3 -0
  370. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  371. package/contracts/oracle/Oracle.sol +1 -1
  372. package/contracts/oracle/OracleService.sol +92 -73
  373. package/contracts/oracle/OracleServiceManager.sol +1 -1
  374. package/contracts/pool/BasicPool.sol +24 -3
  375. package/contracts/pool/BasicPoolAuthorization.sol +27 -8
  376. package/contracts/pool/BundleService.sol +47 -145
  377. package/contracts/pool/BundleServiceManager.sol +1 -1
  378. package/contracts/pool/IBundleService.sol +15 -43
  379. package/contracts/pool/IPoolComponent.sol +1 -7
  380. package/contracts/pool/IPoolService.sol +58 -60
  381. package/contracts/pool/Pool.sol +106 -96
  382. package/contracts/pool/PoolLib.sol +216 -0
  383. package/contracts/pool/PoolService.sol +427 -214
  384. package/contracts/pool/PoolServiceManager.sol +1 -1
  385. package/contracts/product/ApplicationService.sol +15 -15
  386. package/contracts/product/ApplicationServiceManager.sol +1 -1
  387. package/contracts/product/BasicProduct.sol +9 -11
  388. package/contracts/product/BasicProductAuthorization.sol +24 -10
  389. package/contracts/product/ClaimService.sol +157 -137
  390. package/contracts/product/ClaimServiceManager.sol +1 -1
  391. package/contracts/product/IApplicationService.sol +5 -2
  392. package/contracts/product/IClaimService.sol +14 -2
  393. package/contracts/product/IPolicyService.sol +26 -11
  394. package/contracts/product/IProductComponent.sol +4 -1
  395. package/contracts/product/PolicyService.sol +277 -261
  396. package/contracts/product/PolicyServiceLib.sol +65 -0
  397. package/contracts/product/PolicyServiceManager.sol +1 -1
  398. package/contracts/product/PricingService.sol +23 -19
  399. package/contracts/product/PricingServiceManager.sol +3 -3
  400. package/contracts/product/Product.sol +62 -39
  401. package/contracts/product/RiskService.sol +74 -25
  402. package/contracts/product/RiskServiceManager.sol +1 -1
  403. package/contracts/registry/ChainNft.sol +4 -2
  404. package/contracts/registry/IRegistry.sol +10 -15
  405. package/contracts/registry/IRelease.sol +26 -0
  406. package/contracts/registry/Registry.sol +16 -3
  407. package/contracts/registry/RegistryAdmin.sol +132 -226
  408. package/contracts/registry/RegistryService.sol +3 -3
  409. package/contracts/registry/RegistryServiceManager.sol +1 -1
  410. package/contracts/registry/ReleaseAdmin.sol +245 -0
  411. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  412. package/contracts/registry/ReleaseRegistry.sol +129 -119
  413. package/contracts/registry/ServiceAuthorizationV3.sol +93 -40
  414. package/contracts/registry/TokenRegistry.sol +6 -8
  415. package/contracts/shared/Component.sol +61 -105
  416. package/contracts/shared/ComponentService.sol +301 -295
  417. package/contracts/shared/ComponentServiceManager.sol +1 -1
  418. package/contracts/shared/ComponentVerifyingService.sol +16 -14
  419. package/contracts/shared/ContractLib.sol +224 -9
  420. package/contracts/shared/IComponent.sol +4 -17
  421. package/contracts/shared/IComponentService.sol +16 -25
  422. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  423. package/contracts/shared/IRegisterable.sol +15 -4
  424. package/contracts/shared/IService.sol +3 -5
  425. package/contracts/shared/InstanceLinkedComponent.sol +4 -20
  426. package/contracts/shared/NftOwnable.sol +4 -4
  427. package/contracts/shared/PolicyHolder.sol +1 -1
  428. package/contracts/shared/Registerable.sol +44 -20
  429. package/contracts/shared/RegistryLinked.sol +7 -13
  430. package/contracts/shared/Service.sol +8 -27
  431. package/contracts/shared/TokenHandler.sol +263 -105
  432. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  433. package/contracts/staking/IStaking.sol +6 -9
  434. package/contracts/staking/IStakingService.sol +11 -1
  435. package/contracts/staking/StakeManagerLib.sol +63 -7
  436. package/contracts/staking/Staking.sol +72 -39
  437. package/contracts/staking/StakingReader.sol +1 -1
  438. package/contracts/staking/StakingService.sol +56 -14
  439. package/contracts/staking/StakingServiceManager.sol +5 -4
  440. package/contracts/type/Key32.sol +2 -2
  441. package/contracts/type/Key32Set.sol +62 -0
  442. package/contracts/type/NftId.sol +6 -0
  443. package/contracts/type/ObjectType.sol +48 -21
  444. package/contracts/type/RiskId.sol +23 -6
  445. package/contracts/type/RoleId.sol +24 -4
  446. package/contracts/type/Selector.sol +5 -0
  447. package/contracts/type/Timestamp.sol +0 -5
  448. package/contracts/type/UFixed.sol +9 -119
  449. package/contracts/type/Version.sol +15 -5
  450. package/contracts/upgradeability/ProxyManager.sol +1 -1
  451. package/package.json +3 -3
  452. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  453. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  454. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  455. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  456. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
  457. package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
  458. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  459. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  460. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  461. package/contracts/instance/module/IAccess.sol +0 -46
  462. package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
@@ -17,7 +17,7 @@ contract PoolServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  PoolService poolSrv = new PoolService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(poolSrv),
@@ -41,11 +41,11 @@ contract ApplicationService is
41
41
  initializer()
42
42
  {
43
43
  (
44
- address registryAddress,
45
- address authority
44
+ address authority,
45
+ address registry
46
46
  ) = abi.decode(data, (address, address));
47
47
 
48
- _initializeService(registryAddress, authority, owner);
48
+ __Service_init(authority, registry, owner);
49
49
 
50
50
  _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
51
51
  _pricingService = IPricingService(_getServiceAddress(PRICE()));
@@ -55,10 +55,10 @@ contract ApplicationService is
55
55
  }
56
56
 
57
57
 
58
- function _checkLinkedpplicationParameters(
58
+ function _checkLinkedApplicationParameters(
59
59
  InstanceReader instanceReader,
60
60
  NftId productNftId,
61
- RiskId rirskId,
61
+ RiskId riskId,
62
62
  ReferralId referralId,
63
63
  NftId bundleNftId
64
64
  )
@@ -66,18 +66,18 @@ contract ApplicationService is
66
66
  virtual
67
67
  view
68
68
  {
69
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
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 ErrorApplicationServiceRiskPaused(riskId, productNftId); }
70
73
 
71
- // TODO check riskId with product
74
+ // check bundle with pool
75
+ NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
76
+ (exists, active) = instanceReader.getBundleSet().checkBundle(poolNftId, bundleNftId);
77
+ if (!exists) { revert ErrorApplicationServiceBundleUnknown(bundleNftId, poolNftId); }
78
+ if (!active) { revert ErrorApplicationServiceBundleLocked(bundleNftId, poolNftId); }
72
79
 
73
80
  // TODO check referral with distribution
74
-
75
- // check bundle with pool
76
- NftId productPoolNftId = productInfo.poolNftId;
77
- NftId bundlePoolNftId = instanceReader.getBundleInfo(bundleNftId).poolNftId;
78
- if(bundlePoolNftId != productPoolNftId) {
79
- revert ErrorApplicationServiceBundlePoolMismatch(bundleNftId, productPoolNftId, bundlePoolNftId);
80
- }
81
81
  }
82
82
 
83
83
 
@@ -143,7 +143,7 @@ contract ApplicationService is
143
143
 
144
144
  // check if provided references are valid and linked to calling product contract
145
145
  InstanceReader instanceReader = instance.getInstanceReader();
146
- _checkLinkedpplicationParameters(
146
+ _checkLinkedApplicationParameters(
147
147
  instanceReader,
148
148
  productNftId,
149
149
  riskId,
@@ -17,7 +17,7 @@ contract ApplicationServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  ApplicationService svc = new ApplicationService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Fee} from "../type/Fee.sol";
5
5
  import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
6
7
  import {NftId} from "../type/NftId.sol";
7
8
  import {Product} from "../product/Product.sol";
8
9
 
@@ -25,13 +26,12 @@ abstract contract BasicProduct is
25
26
  function _initializeBasicProduct(
26
27
  address registry,
27
28
  NftId instanceNftId,
28
- IAuthorization authorization,
29
- address initialOwner,
30
29
  string memory name,
31
30
  address token,
32
- bool isInterceptor,
33
- bool hasDistribution,
34
- uint8 numberOfOracles
31
+ IComponents.ProductInfo memory productInfo,
32
+ IComponents.FeeInfo memory feeInfo,
33
+ IAuthorization authorization,
34
+ address initialOwner
35
35
  )
36
36
  internal
37
37
  virtual
@@ -40,14 +40,12 @@ abstract contract BasicProduct is
40
40
  _initializeProduct(
41
41
  registry,
42
42
  instanceNftId,
43
- authorization,
44
- initialOwner,
45
43
  name,
46
44
  token,
47
- isInterceptor,
48
- false, // is processing funded claims
49
- hasDistribution,
50
- numberOfOracles,
45
+ productInfo,
46
+ feeInfo,
47
+ authorization,
48
+ initialOwner,
51
49
  ""); // component data
52
50
  }
53
51
  }
@@ -1,13 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Authorization} from "../authorization/Authorization.sol";
5
- import {BasicProduct} from "./BasicProduct.sol";
6
- import {PRODUCT} from "../type/ObjectType.sol";
7
4
  import {IAccess} from "../authorization/IAccess.sol";
8
5
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
9
- import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
10
- import {RoleId} from "../type/RoleId.sol";
6
+
7
+ import {Authorization} from "../authorization/Authorization.sol";
8
+ import {BasicProduct} from "./BasicProduct.sol";
9
+ import {COMPONENT, PRODUCT, POLICY} from "../type/ObjectType.sol";
10
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
11
+ import {TokenHandler} from "../shared/TokenHandler.sol";
11
12
 
12
13
 
13
14
  contract BasicProductAuthorization
@@ -15,17 +16,30 @@ contract BasicProductAuthorization
15
16
  {
16
17
 
17
18
  constructor(string memory componentName)
18
- Authorization(componentName)
19
+ Authorization(componentName, PRODUCT())
19
20
  {}
20
21
 
21
- function _setupTargets()
22
+ function _setupServiceTargets()
22
23
  internal
23
24
  virtual override
24
25
  {
25
- // basic component target
26
- _addComponentTargetWithRole(PRODUCT());
26
+ _addServiceTargetWithRole(COMPONENT());
27
+ _addServiceTargetWithRole(POLICY());
27
28
  }
28
29
 
30
+ function _setupTokenHandlerAuthorizations() internal virtual override {
31
+ // authorize token handler functions for component service role
32
+ IAccess.FunctionInfo[] storage functions;
33
+ functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(COMPONENT()));
34
+ _authorize(functions, TokenHandler.approve.selector, "approve");
35
+ _authorize(functions, TokenHandler.setWallet.selector, "setWallet");
36
+ _authorize(functions, TokenHandler.pushFeeToken.selector, "pushFeeToken");
37
+
38
+ // authorize token handler functions for pool service role
39
+ functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(POLICY()));
40
+ _authorize(functions, TokenHandler.pullToken.selector, "pullToken");
41
+ _authorize(functions, TokenHandler.pushToken.selector, "pushToken");
42
+ }
29
43
 
30
44
  function _setupTargetAuthorizations()
31
45
  internal
@@ -34,7 +48,7 @@ contract BasicProductAuthorization
34
48
  IAccess.FunctionInfo[] storage functions;
35
49
 
36
50
  // authorize public role (open access to any account, only allows to lock target)
37
- functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
51
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
38
52
  _authorize(functions, BasicProduct.setFees.selector, "setFees");
39
53
  _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
40
54
  }
@@ -1,19 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {TimestampLib} from "../type/Timestamp.sol";
6
- import {ObjectType, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
7
- import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
8
- import {NftId} from "../type/NftId.sol";
9
- import {FeeLib} from "../type/Fee.sol";
10
- import {StateId} from "../type/StateId.sol";
11
- import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
12
- import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
13
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
14
- import {ContractLib} from "../shared/ContractLib.sol";
15
- import {InstanceReader} from "../instance/InstanceReader.sol";
16
- import {InstanceStore} from "../instance/InstanceStore.sol";
17
4
  import {IClaimService} from "./IClaimService.sol";
18
5
  import {IComponents} from "../instance/module/IComponents.sol";
19
6
  import {IInstance} from "../instance/IInstance.sol";
@@ -22,10 +9,25 @@ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
22
9
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
23
10
  import {IPolicyService} from "../product/IPolicyService.sol";
24
11
  import {IPoolService} from "../pool/IPoolService.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+
14
+ import {Amount, AmountLib} from "../type/Amount.sol";
15
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
16
+ import {ContractLib} from "../shared/ContractLib.sol";
17
+ import {FeeLib} from "../type/Fee.sol";
18
+ import {InstanceReader} from "../instance/InstanceReader.sol";
19
+ import {InstanceStore} from "../instance/InstanceStore.sol";
20
+ import {NftId} from "../type/NftId.sol";
21
+ import {ObjectType, COMPONENT, CLAIM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
22
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
23
+ import {Service} from "../shared/Service.sol";
24
+ import {StateId} from "../type/StateId.sol";
25
+ import {SUBMITTED, KEEP_STATE, DECLINED, REVOKED, CANCELLED, CONFIRMED, CLOSED, EXPECTED, PAID} from "../type/StateId.sol";
26
+ import {TimestampLib} from "../type/Timestamp.sol";
25
27
 
26
28
 
27
29
  contract ClaimService is
28
- ComponentVerifyingService,
30
+ Service,
29
31
  IClaimService
30
32
  {
31
33
 
@@ -41,11 +43,11 @@ contract ClaimService is
41
43
  initializer()
42
44
  {
43
45
  (
44
- address registryAddress,
45
- address authority
46
+ address authority,
47
+ address registry
46
48
  ) = abi.decode(data, (address, address));
47
49
 
48
- _initializeService(registryAddress, authority, owner);
50
+ __Service_init(authority, registry, owner);
49
51
 
50
52
  _policyService = IPolicyService(getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart()));
51
53
  _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
@@ -61,10 +63,10 @@ contract ClaimService is
61
63
  external
62
64
  virtual
63
65
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
66
+ restricted()
64
67
  returns (ClaimId claimId)
65
68
  {
66
- _checkNftType(policyNftId, POLICY());
67
-
69
+ // checks
68
70
  (
69
71
  ,
70
72
  IInstance instance,,
@@ -77,15 +79,9 @@ contract ClaimService is
77
79
  revert ErrorClaimServicePolicyNotOpen(policyNftId);
78
80
  }
79
81
 
80
- // TODO check claim amount > 0
81
- // check policy including this claim is still within sum insured
82
- if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
83
- revert ErrorClaimServiceClaimExceedsSumInsured(
84
- policyNftId,
85
- policyInfo.sumInsuredAmount,
86
- AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
87
- }
82
+ _checkClaimAmount(policyNftId, policyInfo, claimAmount);
88
83
 
84
+ // effects
89
85
  // create new claim
90
86
  claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
91
87
  instanceStore.createClaim(
@@ -120,6 +116,7 @@ contract ClaimService is
120
116
  virtual
121
117
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
122
118
  {
119
+ // checks
123
120
  _checkNftType(policyNftId, POLICY());
124
121
 
125
122
  (
@@ -130,8 +127,9 @@ contract ClaimService is
130
127
  IPolicy.PolicyInfo memory policyInfo
131
128
  ) = _verifyCallerWithPolicy(policyNftId);
132
129
 
133
- // TODO add check for confirmedAmount > 0 and does not lead to exceeding sum insured
130
+ _checkClaimAmount(policyNftId, policyInfo, confirmedAmount);
134
131
 
132
+ // effects
135
133
  // check/update claim info
136
134
  IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
137
135
  claimInfo.claimAmount = confirmedAmount;
@@ -149,6 +147,7 @@ contract ClaimService is
149
147
 
150
148
  emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
151
149
 
150
+ // interactions
152
151
  // callback to pool if applicable
153
152
  _processConfirmedClaimByPool(instanceReader, productNftId, policyNftId, claimId, confirmedAmount);
154
153
 
@@ -190,7 +189,6 @@ contract ClaimService is
190
189
  }
191
190
 
192
191
 
193
- // TODO add test case
194
192
  function revoke(
195
193
  NftId policyNftId,
196
194
  ClaimId claimId
@@ -198,9 +196,7 @@ contract ClaimService is
198
196
  external
199
197
  virtual
200
198
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
201
- {
202
- _checkNftType(policyNftId, POLICY());
203
-
199
+ {
204
200
  (
205
201
  ,
206
202
  IInstance instance,
@@ -277,8 +273,6 @@ contract ClaimService is
277
273
  // nonReentrant() // prevents creating a reinsurance claim in a single tx
278
274
  returns (PayoutId payoutId)
279
275
  {
280
- _checkNftType(policyNftId, POLICY());
281
-
282
276
  if (beneficiary == address(0)) {
283
277
  revert ErrorClaimServiceBeneficiaryIsZero(policyNftId, claimId);
284
278
  }
@@ -322,25 +316,39 @@ contract ClaimService is
322
316
  virtual
323
317
  // nonReentrant() // prevents creating a reinsurance payout in a single tx
324
318
  {
325
- _checkNftType(policyNftId, POLICY());
326
-
319
+ // checks
327
320
  (
328
- ,
329
- IInstance instance,
321
+ NftId productNftId,,
322
+ // IInstance instance,
330
323
  InstanceReader instanceReader,
331
324
  InstanceStore instanceStore,
332
325
  IPolicy.PolicyInfo memory policyInfo
333
326
  ) = _verifyCallerWithPolicy(policyNftId);
334
327
 
335
- // TODO add check that payout exists and is open
328
+ // check that payout exists and is open
336
329
  IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
330
+ StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
331
+ if(payoutState != EXPECTED()) {
332
+ revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
333
+ }
337
334
 
335
+ // check that payout amount does not violate claim amount
336
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, payoutId.toClaimId());
337
+ if(claimInfo.paidAmount + payoutInfo.amount > claimInfo.claimAmount) {
338
+ revert ErrorClaimServicePayoutExceedsClaimAmount(
339
+ policyNftId,
340
+ payoutId.toClaimId(),
341
+ claimInfo.claimAmount,
342
+ claimInfo.paidAmount + payoutInfo.amount);
343
+ }
344
+
345
+ // effects
338
346
  // update and save payout info with instance
339
347
  payoutInfo.paidAt = TimestampLib.blockTimestamp();
340
348
  instanceStore.updatePayout(policyNftId, payoutId, payoutInfo, PAID());
341
349
 
350
+ // update and save claim info with instance
342
351
  Amount payoutAmount = payoutInfo.amount;
343
-
344
352
  {
345
353
  ClaimId claimId = payoutId.toClaimId();
346
354
  IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
@@ -360,46 +368,82 @@ contract ClaimService is
360
368
  }
361
369
 
362
370
  // update and save policy info with instance
363
- policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
371
+ policyInfo.payoutAmount = policyInfo.payoutAmount + payoutAmount;
364
372
  instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
365
373
 
366
- // inform pool about payout
374
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount);
375
+
376
+ // effects + interactions (push tokens to beneficiary, product)
377
+ // delegate to pool to update book keeping and moving tokens payout
367
378
  _poolService.processPayout(
368
- instance,
369
- address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
379
+ instanceReader,
380
+ instanceStore,
381
+ policyInfo.productNftId, // product nft id
370
382
  policyNftId,
371
- policyInfo,
372
- payoutAmount);
373
-
374
- // transfer payout token and fee
375
- {
376
- (
377
- Amount netPayoutAmount,
378
- Amount processingFeeAmount,
379
- address beneficiary
380
- ) = _calculatePayoutAmount(
381
- instanceReader,
382
- policyNftId,
383
- policyInfo,
384
- payoutInfo);
385
-
386
- emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount, processingFeeAmount);
387
-
388
- {
389
- NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
390
- IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
391
- poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
392
-
393
- // TODO add 2nd token tx if processingFeeAmount > 0
394
- }
383
+ policyInfo.bundleNftId,
384
+ payoutId,
385
+ payoutAmount,
386
+ payoutInfo.beneficiary);
387
+ }
395
388
 
396
- // callback to policy holder if applicable
397
- _policyHolderPayoutExecuted(policyNftId, payoutId, beneficiary, payoutAmount);
389
+ function cancelPayout(
390
+ NftId policyNftId,
391
+ PayoutId payoutId
392
+ )
393
+ external
394
+ virtual
395
+ {
396
+ // checks
397
+ (
398
+ ,
399
+ IInstance instance,
400
+ InstanceReader instanceReader,
401
+ InstanceStore instanceStore,
402
+ IPolicy.PolicyInfo memory policyInfo
403
+ ) = _verifyCallerWithPolicy(policyNftId);
404
+
405
+ StateId payoutState = instanceReader.getPayoutState(policyNftId, payoutId);
406
+ if (payoutState != EXPECTED()) {
407
+ revert ErrorClaimServicePayoutNotExpected(policyNftId, payoutId, payoutState);
408
+ }
409
+
410
+ // effects
411
+ // update and save payout info with instance
412
+ instanceStore.updatePayoutState(policyNftId, payoutId, CANCELLED());
413
+
414
+ {
415
+ ClaimId claimId = payoutId.toClaimId();
416
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
417
+ claimInfo.openPayoutsCount -= 1;
418
+ instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
398
419
  }
420
+
421
+ emit LogClaimServicePayoutCancelled(policyNftId, payoutId);
399
422
  }
400
423
 
401
424
  // internal functions
402
425
 
426
+ function _checkClaimAmount(
427
+ NftId policyNftId,
428
+ IPolicy.PolicyInfo memory policyInfo,
429
+ Amount claimAmount
430
+ )
431
+ internal
432
+ pure
433
+ {
434
+ // check claim amount > 0
435
+ if (claimAmount.eqz()) {
436
+ revert ErrorClaimServiceClaimAmountIsZero(policyNftId);
437
+ }
438
+
439
+ // check policy including this claim is still within sum insured
440
+ if(policyInfo.claimAmount + claimAmount > policyInfo.sumInsuredAmount) {
441
+ revert ErrorClaimServiceClaimExceedsSumInsured(
442
+ policyNftId,
443
+ policyInfo.sumInsuredAmount,
444
+ policyInfo.payoutAmount + claimAmount);
445
+ }
446
+ }
403
447
 
404
448
  function _createPayout(
405
449
  NftId policyNftId,
@@ -412,22 +456,32 @@ contract ClaimService is
412
456
  virtual
413
457
  returns (PayoutId payoutId)
414
458
  {
459
+ // checks
415
460
  (
416
- ,
417
- ,
461
+ ,,
418
462
  InstanceReader instanceReader,
419
463
  InstanceStore instanceStore,
420
- IPolicy.PolicyInfo memory policyInfo
464
+ // IPolicy.PolicyInfo memory policyInfo
421
465
  ) = _verifyCallerWithPolicy(policyNftId);
422
466
 
423
467
  IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
424
- StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
425
468
 
426
- // TODO add checks
427
- // claim needs to be open
428
- // claim.paidAmount + amount <= claim.claimAmount
469
+ {
470
+ // check claim state
471
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
472
+ if (claimState != CONFIRMED()) {
473
+ revert ErrorClaimServiceClaimNotConfirmed(policyNftId, claimId, claimState);
474
+ }
429
475
 
430
- // check/update claim info
476
+ // check total payout amount remains within claim limit
477
+ Amount newPaidAmount = claimInfo.paidAmount + amount;
478
+ if (newPaidAmount > claimInfo.claimAmount) {
479
+ revert ErrorClaimServicePayoutExceedsClaimAmount(
480
+ policyNftId, claimId, claimInfo.claimAmount, newPaidAmount);
481
+ }
482
+ }
483
+
484
+ // effects
431
485
  // create payout info with instance
432
486
  uint24 payoutNo = claimInfo.payoutsCount + 1;
433
487
  payoutId = PayoutIdLib.toPayoutId(claimId, payoutNo);
@@ -450,52 +504,10 @@ contract ClaimService is
450
504
  claimInfo.openPayoutsCount += 1;
451
505
  instanceStore.updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
452
506
 
453
- // update and save policy info with instance
454
- policyInfo.payoutAmount.add(amount);
455
- instanceStore.updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
456
-
457
507
  emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount, beneficiary);
458
508
  }
459
509
 
460
510
 
461
- function _calculatePayoutAmount(
462
- InstanceReader instanceReader,
463
- NftId policyNftId,
464
- IPolicy.PolicyInfo memory policyInfo,
465
- IPolicy.PayoutInfo memory payoutInfo
466
- )
467
- internal
468
- returns (
469
- Amount netPayoutAmount,
470
- Amount processingFeeAmount,
471
- address beneficiary
472
- )
473
- {
474
- Amount payoutAmount = payoutInfo.amount;
475
-
476
- if(payoutAmount.gtz()) {
477
- NftId productNftId = policyInfo.productNftId;
478
-
479
- // get pool component info from policy or product
480
- NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
481
- IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
482
-
483
- netPayoutAmount = payoutAmount;
484
-
485
- if (payoutInfo.beneficiary == address(0)) {
486
- beneficiary = getRegistry().ownerOf(policyNftId);
487
- } else {
488
- beneficiary = payoutInfo.beneficiary;
489
- }
490
-
491
- IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
492
- if(FeeLib.gtz(productInfo.processingFee)) {
493
- // TODO calculate and set net payout and processing fees
494
- }
495
- }
496
- }
497
-
498
-
499
511
  function _verifyCallerWithPolicy(
500
512
  NftId policyNftId
501
513
  )
@@ -510,7 +522,7 @@ contract ClaimService is
510
522
  IPolicy.PolicyInfo memory policyInfo
511
523
  )
512
524
  {
513
- (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
525
+ (productNftId, instance) = _getAndVerifyActiveComponent(PRODUCT());
514
526
  instanceReader = instance.getInstanceReader();
515
527
  instanceStore = instance.getInstanceStore();
516
528
 
@@ -523,6 +535,29 @@ contract ClaimService is
523
535
  }
524
536
  }
525
537
 
538
+
539
+ function _getAndVerifyActiveComponent(ObjectType expectedType)
540
+ internal
541
+ view
542
+ returns (
543
+ NftId productNftId,
544
+ IInstance instance
545
+ )
546
+ {
547
+ (
548
+ IRegistry.ObjectInfo memory info,
549
+ address instanceAddress
550
+ ) = ContractLib.getAndVerifyComponent(
551
+ getRegistry(),
552
+ msg.sender, // caller
553
+ PRODUCT(),
554
+ true); // isActive
555
+
556
+ // get component nft id and instance
557
+ productNftId = info.nftId;
558
+ instance = IInstance(instanceAddress);
559
+ }
560
+
526
561
  function _verifyClaim(
527
562
  InstanceReader instanceReader,
528
563
  NftId policyNftId,
@@ -576,22 +611,7 @@ contract ClaimService is
576
611
  }
577
612
  }
578
613
 
579
-
580
- function _policyHolderPayoutExecuted(
581
- NftId policyNftId,
582
- PayoutId payoutId,
583
- address beneficiary,
584
- Amount payoutAmount
585
- )
586
- internal
587
- {
588
- IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
589
- if(address(policyHolder) != address(0)) {
590
- policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
591
- }
592
- }
593
-
594
-
614
+ // TODO: move to policy helper lib or something
595
615
  function _getPolicyHolder(NftId policyNftId)
596
616
  internal
597
617
  view
@@ -17,7 +17,7 @@ contract ClaimServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  ClaimService svc = new ClaimService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -15,8 +15,11 @@ import {Seconds} from "../type/Seconds.sol";
15
15
  /// only product components may call transaction functions
16
16
  interface IApplicationService is IService {
17
17
 
18
- error ErrorApplicationServiceNotProduct(NftId callerNftId, ObjectType callerType);
19
- error ErrorApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
18
+ // _checkLinkedApplicationParameters
19
+ error ErrorApplicationServiceRiskUnknown(RiskId riskId, NftId productNftId);
20
+ error ErrorApplicationServiceRiskPaused(RiskId riskId, NftId productNftId);
21
+ error ErrorApplicationServiceBundleUnknown(NftId bundleNftId, NftId poolNftId);
22
+ error ErrorApplicationServiceBundleLocked(NftId bundleNftId, NftId poolNftId);
20
23
 
21
24
  /// @dev creates a new application based on the specified attributes
22
25
  /// may only be called by a product component