@etherisc/gif-next 0.0.2-dfb8aa3-070 → 0.0.2-e016345-525

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 (375) 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 +944 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +711 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  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/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +53 -163
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +6 -68
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +121 -82
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +72 -48
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +6 -50
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +23 -0
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +50 -147
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +105 -186
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +79 -121
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +31 -117
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +168 -155
  54. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +403 -205
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  60. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  62. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -18
  64. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -17
  66. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  67. package/artifacts/contracts/instance/Instance.sol/Instance.json +96 -29
  68. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +103 -72
  70. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  72. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +303 -75
  74. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +71 -48
  76. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -22
  78. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +36 -46
  80. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -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 +2 -2
  91. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  92. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  97. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +20 -130
  100. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  102. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +6 -50
  105. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +6 -68
  108. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +84 -60
  110. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +66 -22
  112. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +6 -83
  114. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  115. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  116. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +101 -206
  118. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +58 -70
  120. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -57
  122. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  123. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +6 -89
  124. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +77 -75
  126. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  127. package/artifacts/contracts/pool/Pool.sol/Pool.json +6 -107
  128. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +153 -159
  130. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -33
  132. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  133. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +58 -23
  134. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -22
  136. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  137. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +11 -68
  138. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  139. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  140. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  141. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -66
  142. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -47
  144. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  145. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
  146. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  147. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +38 -19
  149. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  151. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +11 -50
  152. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  153. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +132 -121
  155. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +70 -42
  157. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.json +50 -34
  159. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +56 -32
  161. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  162. package/artifacts/contracts/product/Product.sol/Product.json +11 -68
  163. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -18
  165. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +40 -16
  167. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  168. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +24 -0
  170. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  171. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  172. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/Registry.sol/Registry.json +62 -38
  174. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +107 -94
  176. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  177. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +32 -16
  178. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  179. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +39 -15
  180. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  182. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +12 -12
  184. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  186. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  188. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  189. package/artifacts/contracts/shared/Component.sol/Component.json +6 -54
  190. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +216 -410
  192. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +65 -61
  194. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
  197. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  198. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  199. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  201. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +6 -36
  203. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +107 -245
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +6 -50
  207. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  209. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  215. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  216. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +6 -68
  217. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  219. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  220. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  222. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  224. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  225. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  227. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  228. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  229. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  230. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  231. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  232. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  233. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  234. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  235. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  236. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  237. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +24 -72
  238. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  241. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  242. package/artifacts/contracts/staking/Staking.sol/Staking.json +80 -152
  243. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  245. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -46
  247. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  249. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +36 -20
  251. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +43 -19
  253. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  255. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  256. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  257. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  258. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  262. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  264. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  267. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  268. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  269. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  271. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  272. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  273. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  275. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  277. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  279. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  281. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
  283. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  285. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  295. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  296. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  297. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  298. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  299. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  300. package/contracts/accounting/AccountingService.sol +244 -0
  301. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  302. package/contracts/accounting/IAccountingService.sol +42 -0
  303. package/contracts/authorization/AccessAdmin.sol +21 -1
  304. package/contracts/distribution/BasicDistribution.sol +6 -6
  305. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  306. package/contracts/distribution/Distribution.sol +32 -30
  307. package/contracts/distribution/DistributionService.sol +28 -26
  308. package/contracts/distribution/IDistributionService.sol +5 -6
  309. package/contracts/examples/fire/FirePool.sol +22 -5
  310. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  311. package/contracts/examples/fire/FireProduct.sol +29 -8
  312. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  313. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  314. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  315. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  316. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  317. package/contracts/examples/unpermissioned/SimpleProduct.sol +22 -21
  318. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  319. package/contracts/instance/BundleSet.sol +38 -34
  320. package/contracts/instance/IInstance.sol +7 -2
  321. package/contracts/instance/IInstanceService.sol +7 -9
  322. package/contracts/instance/Instance.sol +16 -9
  323. package/contracts/instance/InstanceAdmin.sol +20 -12
  324. package/contracts/instance/InstanceAuthorizationV3.sol +42 -14
  325. package/contracts/instance/InstanceReader.sol +86 -2
  326. package/contracts/instance/InstanceService.sol +38 -58
  327. package/contracts/instance/RiskSet.sol +119 -0
  328. package/contracts/instance/base/ObjectSet.sol +24 -25
  329. package/contracts/instance/module/IComponents.sol +1 -2
  330. package/contracts/instance/module/IPolicy.sol +2 -1
  331. package/contracts/instance/module/IRisk.sol +1 -0
  332. package/contracts/oracle/OracleService.sol +87 -69
  333. package/contracts/pool/BasicPool.sol +24 -3
  334. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  335. package/contracts/pool/BundleService.sol +23 -91
  336. package/contracts/pool/IBundleService.sol +2 -23
  337. package/contracts/pool/IPoolComponent.sol +1 -7
  338. package/contracts/pool/IPoolService.sol +12 -26
  339. package/contracts/pool/Pool.sol +112 -102
  340. package/contracts/pool/PoolService.sol +167 -96
  341. package/contracts/product/ApplicationService.sol +12 -12
  342. package/contracts/product/BasicProduct.sol +7 -11
  343. package/contracts/product/BasicProductAuthorization.sol +1 -2
  344. package/contracts/product/ClaimService.sol +3 -1
  345. package/contracts/product/IApplicationService.sol +5 -2
  346. package/contracts/product/IPolicyService.sol +17 -7
  347. package/contracts/product/PolicyService.sol +241 -196
  348. package/contracts/product/Product.sol +12 -40
  349. package/contracts/product/RiskService.sol +14 -3
  350. package/contracts/registry/IRegistry.sol +2 -0
  351. package/contracts/registry/Registry.sol +9 -1
  352. package/contracts/registry/RegistryAdmin.sol +21 -12
  353. package/contracts/registry/ReleaseRegistry.sol +2 -18
  354. package/contracts/registry/ServiceAuthorizationV3.sol +22 -41
  355. package/contracts/shared/Component.sol +44 -90
  356. package/contracts/shared/ComponentService.sol +160 -212
  357. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  358. package/contracts/shared/ContractLib.sol +196 -10
  359. package/contracts/shared/IComponent.sol +1 -13
  360. package/contracts/shared/IComponentService.sol +20 -24
  361. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  362. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  363. package/contracts/shared/Registerable.sol +0 -2
  364. package/contracts/shared/RegistryLinked.sol +6 -12
  365. package/contracts/shared/TokenHandler.sol +316 -66
  366. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  367. package/contracts/staking/IStaking.sol +9 -4
  368. package/contracts/staking/Staking.sol +39 -21
  369. package/contracts/staking/StakingService.sol +41 -8
  370. package/contracts/type/Key32.sol +2 -2
  371. package/contracts/type/Key32Set.sol +62 -0
  372. package/contracts/type/NftId.sol +6 -0
  373. package/contracts/type/ObjectType.sol +10 -0
  374. package/contracts/type/RiskId.sol +18 -6
  375. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
4
+ import {ContractLib} from "../shared/ContractLib.sol";
5
5
  import {IComponent} from "../shared/IComponent.sol";
6
6
  import {IInstance} from "../instance/IInstance.sol";
7
7
  import {IInstanceService} from "../instance/IInstanceService.sol";
@@ -13,12 +13,13 @@ import {IRegistry} from "../registry/IRegistry.sol";
13
13
  import {NftId} from "../type/NftId.sol";
14
14
  import {ObjectType, COMPONENT, ORACLE, PRODUCT} from "../type/ObjectType.sol";
15
15
  import {RequestId} from "../type/RequestId.sol";
16
+ import {Service} from "../shared/Service.sol";
16
17
  import {StateId, ACTIVE, KEEP_STATE, FULFILLED, FAILED, CANCELLED} from "../type/StateId.sol";
17
18
  import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
18
19
 
19
20
 
20
21
  contract OracleService is
21
- ComponentVerifyingService,
22
+ Service,
22
23
  IOracleService
23
24
  {
24
25
 
@@ -49,51 +50,27 @@ contract OracleService is
49
50
  virtual
50
51
  // restricted() // add authz
51
52
  onlyNftOfType(oracleNftId, ORACLE())
52
- returns (
53
- RequestId requestId
54
- )
53
+ returns (RequestId requestId)
55
54
  {
56
- (
57
- NftId componentNftId,
58
- IRegistry.ObjectInfo memory componentInfo,
59
- IInstance instance
60
- ) = _getAndVerifyActiveComponent(COMPONENT());
55
+ // IRegistry registry = getRegistry();
61
56
 
62
- // oracleNftId exists and is active oracle
57
+ // get and check active caller
63
58
  (
64
- IRegistry.ObjectInfo memory oracleInfo,
65
- ) = _getAndVerifyComponentInfo(
66
- oracleNftId,
67
- ORACLE(),
68
- true); // only active
69
-
70
- {
71
- // check that requester and oracle share same product cluster
72
- if (componentInfo.objectType == PRODUCT()) {
73
- if (oracleInfo.parentNftId != componentInfo.nftId) {
74
- revert ErrorOracleServiceProductMismatch(componentInfo.objectType, componentInfo.nftId, oracleInfo.parentNftId);
75
- }
76
- } else {
77
- if (oracleInfo.parentNftId != componentInfo.parentNftId) {
78
- revert ErrorOracleServiceProductMismatch(componentInfo.objectType, componentInfo.parentNftId, oracleInfo.parentNftId);
79
- }
80
- }
59
+ IRegistry.ObjectInfo memory info,
60
+ address instance
61
+ ) = ContractLib.getAndVerifyAnyComponent(
62
+ getRegistry(), msg.sender, true);
81
63
 
82
- // check expiriyAt >= now
83
- if (expiryAt < TimestampLib.blockTimestamp()) {
84
- revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
85
- }
86
-
87
- // check callbackMethodName.length > 0
88
- if (bytes(callbackMethodName).length == 0) {
89
- revert ErrorOracleServiceCallbackMethodNameEmpty();
90
- }
91
- }
64
+ (
65
+ NftId requesterNftId,
66
+ IOracleComponent oracle
67
+ ) = _checkRequestParams(
68
+ getRegistry(), oracleNftId, info, expiryAt, callbackMethodName);
92
69
 
93
70
  {
94
71
  // create request info
95
72
  IOracle.RequestInfo memory request = IOracle.RequestInfo({
96
- requesterNftId: componentNftId,
73
+ requesterNftId: requesterNftId,
97
74
  callbackMethodName: callbackMethodName,
98
75
  oracleNftId: oracleNftId,
99
76
  requestData: requestData,
@@ -104,17 +81,17 @@ contract OracleService is
104
81
  });
105
82
 
106
83
  // store request with instance
107
- requestId = instance.getInstanceStore().createRequest(request);
84
+ requestId = IInstance(instance).getInstanceStore().createRequest(request);
108
85
  }
109
86
 
110
- // call oracle component
111
- IOracleComponent(oracleInfo.objectAddress).request(
87
+ // callback to oracle component
88
+ oracle.request(
112
89
  requestId,
113
- componentNftId,
90
+ requesterNftId,
114
91
  requestData,
115
92
  expiryAt);
116
93
 
117
- emit LogOracleServiceRequestCreated(requestId, componentNftId, oracleNftId, expiryAt);
94
+ emit LogOracleServiceRequestCreated(requestId, requesterNftId, oracleNftId, expiryAt);
118
95
  }
119
96
 
120
97
 
@@ -130,11 +107,13 @@ contract OracleService is
130
107
  returns (bool success)
131
108
  {
132
109
  (
133
- NftId oracleNftId,
134
- IRegistry.ObjectInfo memory componentInfo,
135
- IInstance instance
136
- ) = _getAndVerifyActiveComponent(ORACLE());
110
+ IRegistry.ObjectInfo memory info,
111
+ address instanceAddress
112
+ ) = ContractLib.getAndVerifyComponent(
113
+ getRegistry(), msg.sender, ORACLE(), true);
137
114
 
115
+ NftId oracleNftId = info.nftId;
116
+ IInstance instance = IInstance(instanceAddress);
138
117
  bool callerIsOracle = true;
139
118
  IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, oracleNftId, callerIsOracle);
140
119
  request.responseData = responseData;
@@ -176,11 +155,13 @@ contract OracleService is
176
155
  // restricted() // add authz
177
156
  {
178
157
  (
179
- NftId requesterNftId,
180
- IRegistry.ObjectInfo memory requesterInfo,
181
- IInstance instance
182
- ) = _getAndVerifyActiveComponent(COMPONENT());
158
+ IRegistry.ObjectInfo memory info,
159
+ address instanceAddress
160
+ ) = ContractLib.getAndVerifyAnyComponent(
161
+ getRegistry(), msg.sender, true);
183
162
 
163
+ NftId requesterNftId = info.nftId;
164
+ IInstance instance = IInstance(instanceAddress);
184
165
  bool callerIsOracle = false;
185
166
  IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, requesterNftId, callerIsOracle);
186
167
 
@@ -191,7 +172,7 @@ contract OracleService is
191
172
  "(uint64,bytes)"
192
173
  ));
193
174
 
194
- (bool success, bytes memory returnData) = requesterInfo.objectAddress.call(
175
+ (bool success, bytes memory returnData) = info.objectAddress.call(
195
176
  abi.encodeWithSignature(
196
177
  functionSignature,
197
178
  requestId,
@@ -202,7 +183,7 @@ contract OracleService is
202
183
  instance.getInstanceStore().updateRequestState(requestId, FULFILLED());
203
184
  emit LogOracleServiceResponseResent(requestId, requesterNftId);
204
185
  } else {
205
- emit LogOracleServiceDeliveryFailed(requestId, requesterInfo.objectAddress, functionSignature);
186
+ emit LogOracleServiceDeliveryFailed(requestId, info.objectAddress, functionSignature);
206
187
  }
207
188
  }
208
189
 
@@ -213,11 +194,13 @@ contract OracleService is
213
194
  // restricted() // add authz
214
195
  {
215
196
  (
216
- NftId requesterNftId,
217
- IRegistry.ObjectInfo memory componentInfo,
218
- IInstance instance
219
- ) = _getAndVerifyActiveComponent(COMPONENT());
197
+ IRegistry.ObjectInfo memory info,
198
+ address instanceAddress
199
+ ) = ContractLib.getAndVerifyAnyComponent(
200
+ getRegistry(), msg.sender, true);
220
201
 
202
+ NftId requesterNftId = info.nftId;
203
+ IInstance instance = IInstance(instanceAddress);
221
204
  bool callerIsOracle = false;
222
205
  // TODO property isCancelled and state update to CANCELLED are redundant, get rid of isCancelled
223
206
  IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, requesterNftId, callerIsOracle);
@@ -234,6 +217,52 @@ contract OracleService is
234
217
  }
235
218
 
236
219
 
220
+ function _checkRequestParams(
221
+ IRegistry registry,
222
+ NftId oracleNftId,
223
+ IRegistry.ObjectInfo memory info,
224
+ Timestamp expiryAt,
225
+ string memory callbackMethodName
226
+ )
227
+ internal
228
+ virtual
229
+ view
230
+ returns (
231
+ NftId requesterNftId,
232
+ IOracleComponent oracle
233
+ )
234
+ {
235
+ // get oracle info
236
+ (IRegistry.ObjectInfo memory oracleInfo,) = ContractLib.getInfoAndInstance(
237
+ registry, oracleNftId, true);
238
+
239
+ // obtain return values
240
+ requesterNftId = info.nftId;
241
+ oracle = IOracleComponent(oracleInfo.objectAddress);
242
+
243
+ // check that requester and oracle share same product cluster
244
+ if (info.objectType == PRODUCT()) {
245
+ if (oracleInfo.parentNftId != requesterNftId) {
246
+ revert ErrorOracleServiceProductMismatch(info.objectType, requesterNftId, oracleInfo.parentNftId);
247
+ }
248
+ } else {
249
+ if (oracleInfo.parentNftId != info.parentNftId) {
250
+ revert ErrorOracleServiceProductMismatch(info.objectType, info.parentNftId, oracleInfo.parentNftId);
251
+ }
252
+ }
253
+
254
+ // check expiriyAt >= now
255
+ if (expiryAt < TimestampLib.blockTimestamp()) {
256
+ revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
257
+ }
258
+
259
+ // check callbackMethodName.length > 0
260
+ if (bytes(callbackMethodName).length == 0) {
261
+ revert ErrorOracleServiceCallbackMethodNameEmpty();
262
+ }
263
+ }
264
+
265
+
237
266
  function _checkAndGetRequestInfo(
238
267
  IInstance instance,
239
268
  RequestId requestId,
@@ -274,17 +303,6 @@ contract OracleService is
274
303
  }
275
304
 
276
305
 
277
- function _getInstanceForComponent(NftId componentNftId)
278
- internal
279
- view
280
- returns(IInstance instance)
281
- {
282
- NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
283
- address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
284
- return IInstance(instanceAddress);
285
- }
286
-
287
-
288
306
  function _getDomain() internal pure override returns(ObjectType) {
289
307
  return ORACLE();
290
308
  }
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {Amount} from "../type/Amount.sol";
5
5
  import {Fee} from "../type/Fee.sol";
6
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
7
+ import {IComponents} from "../instance/module/IComponents.sol";
7
8
  import {NftId} from "../type/NftId.sol";
8
9
  import {BUNDLE} from "../type/ObjectType.sol";
9
10
  import {RoleId} from "../type/RoleId.sol";
@@ -19,9 +20,10 @@ abstract contract BasicPool is
19
20
  function _initializeBasicPool(
20
21
  address registry,
21
22
  NftId productNftId,
22
- IAuthorization authorization,
23
- address token,
24
23
  string memory name,
24
+ address token,
25
+ IComponents.PoolInfo memory poolInfo,
26
+ IAuthorization authorization,
25
27
  address initialOwner
26
28
  )
27
29
  internal
@@ -33,8 +35,8 @@ abstract contract BasicPool is
33
35
  productNftId,
34
36
  name,
35
37
  token,
38
+ poolInfo,
36
39
  authorization,
37
- false, // isInterceptingNftTransfers,
38
40
  initialOwner,
39
41
  ""); // componentData
40
42
  }
@@ -115,6 +117,9 @@ abstract contract BasicPool is
115
117
  }
116
118
 
117
119
 
120
+ /// @dev Updates the bundle feeds to the specified values.
121
+ /// @param bundleNftId the bundle Nft Id
122
+ /// @param fee the new fee values
118
123
  function setBundleFee(
119
124
  NftId bundleNftId,
120
125
  Fee memory fee
@@ -129,6 +134,22 @@ abstract contract BasicPool is
129
134
  }
130
135
 
131
136
 
137
+ /// @dev Withdraw bundle feeds for the given bundle.
138
+ /// @param bundleNftId the bundle Nft Id
139
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
140
+ /// @return withdrawnAmount the effective withdrawn amount
141
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
142
+ external
143
+ virtual
144
+ restricted()
145
+ onlyBundleOwner(bundleNftId)
146
+ onlyNftOfType(bundleNftId, BUNDLE())
147
+ returns (Amount withdrawnAmount)
148
+ {
149
+ return _withdrawBundleFees(bundleNftId, amount);
150
+ }
151
+
152
+
132
153
  function setMaxBalanceAmount(Amount maxBalanceAmount)
133
154
  public
134
155
  virtual
@@ -19,6 +19,13 @@ contract BasicPoolAuthorization
19
19
  Authorization(poolName)
20
20
  {}
21
21
 
22
+ function _setupServiceTargets()
23
+ internal
24
+ virtual override
25
+ {
26
+ _addServiceTargetWithRole(POOL());
27
+ }
28
+
22
29
  function _setupTargets()
23
30
  internal
24
31
  virtual override
@@ -51,7 +58,11 @@ contract BasicPoolAuthorization
51
58
 
52
59
  _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
53
60
 
54
- _authorize(functions, IPoolComponent.withdrawBundleFees.selector, "withdrawBundleFees");
61
+ _authorize(functions, BasicPool.withdrawBundleFees.selector, "withdrawBundleFees");
62
+
63
+ // authorize pool service
64
+ functions = _authorizeForTarget(getTargetName(), getServiceRole(POOL()));
65
+ _authorize(functions, IPoolComponent.verifyApplication.selector, "verifyApplication");
55
66
  }
56
67
  }
57
68
 
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
4
5
  import {IBundle} from "../instance/module/IBundle.sol";
5
6
  import {IBundleService} from "./IBundleService.sol";
6
7
  import {IComponents} from "../instance/module/IComponents.sol";
@@ -9,7 +10,6 @@ import {IRegistry} from "../registry/IRegistry.sol";
9
10
  import {IRegistryService} from "../registry/IRegistryService.sol";
10
11
  import {IInstance} from "../instance/IInstance.sol";
11
12
  import {InstanceStore} from "../instance/InstanceStore.sol";
12
- import {IPolicy} from "../instance/module/IPolicy.sol";
13
13
 
14
14
  import {Amount, AmountLib} from "../type/Amount.sol";
15
15
  import {BundleSet} from "../instance/BundleSet.sol";
@@ -17,7 +17,7 @@ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol
17
17
  import {Fee} from "../type/Fee.sol";
18
18
  import {InstanceReader} from "../instance/InstanceReader.sol";
19
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
20
- import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
20
+ import {ObjectType, ACCOUNTING, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
21
21
  import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
22
  import {Seconds} from "../type/Seconds.sol";
23
23
  import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
@@ -33,6 +33,7 @@ contract BundleService is
33
33
 
34
34
  address private _registryAddress;
35
35
  IRegistryService private _registryService;
36
+ IAccountingService private _accountingService;
36
37
  IComponentService private _componentService;
37
38
 
38
39
  function _initialize(
@@ -51,6 +52,7 @@ contract BundleService is
51
52
  _initializeService(registryAddress, authority, owner);
52
53
 
53
54
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
55
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
54
56
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
55
57
 
56
58
  _registerInterface(type(IBundleService).interfaceId);
@@ -63,6 +65,7 @@ contract BundleService is
63
65
  )
64
66
  external
65
67
  virtual
68
+ restricted()
66
69
  {
67
70
  _checkNftType(bundleNftId, BUNDLE());
68
71
 
@@ -83,20 +86,17 @@ contract BundleService is
83
86
 
84
87
 
85
88
  function create(
86
- IInstance instance,
87
- NftId poolNftId,
88
89
  address owner,
89
90
  Fee memory bundleFee,
90
- Amount stakingAmount,
91
91
  Seconds lifetime,
92
92
  bytes calldata filter
93
93
  )
94
94
  external
95
- override
96
- restricted
95
+ virtual
96
+ restricted()
97
97
  returns(NftId bundleNftId)
98
98
  {
99
- _checkNftType(poolNftId, POOL());
99
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
100
100
 
101
101
  // register bundle with registry
102
102
  bundleNftId = _registryService.registerBundle(
@@ -125,19 +125,11 @@ contract BundleService is
125
125
  })
126
126
  );
127
127
 
128
- if (stakingAmount.gtz()) {
129
- // bundle book keeping
130
- _componentService.increaseBundleBalance(
131
- instanceStore,
132
- bundleNftId,
133
- stakingAmount,
134
- AmountLib.zero()); // fee amount
135
- }
136
-
137
128
  // put bundle under bundle managemet
138
129
  BundleSet bundleManager = instance.getBundleSet();
139
130
  bundleManager.add(bundleNftId);
140
- // TODO add logging
131
+
132
+ emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
141
133
  }
142
134
 
143
135
 
@@ -185,15 +177,13 @@ contract BundleService is
185
177
 
186
178
  // updated locked amount
187
179
  instanceStore.increaseLocked(bundleNftId, collateralAmount);
188
-
189
- // link policy to bundle in bundle manger
190
- _linkPolicy(instance, policyNftId);
191
180
  }
192
181
 
193
182
 
194
183
  function lock(NftId bundleNftId)
195
184
  external
196
185
  virtual
186
+ restricted()
197
187
  {
198
188
  _checkNftType(bundleNftId, BUNDLE());
199
189
 
@@ -213,6 +203,7 @@ contract BundleService is
213
203
  function unlock(NftId bundleNftId)
214
204
  external
215
205
  virtual
206
+ restricted()
216
207
  {
217
208
  _checkNftType(bundleNftId, BUNDLE());
218
209
 
@@ -235,7 +226,7 @@ contract BundleService is
235
226
  )
236
227
  external
237
228
  virtual
238
- restricted
229
+ restricted()
239
230
  returns (Amount unstakedAmount, Amount feeAmount)
240
231
  {
241
232
  _checkNftType(bundleNftId, BUNDLE());
@@ -259,7 +250,7 @@ contract BundleService is
259
250
  Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
260
251
  feeAmount = instanceReader.getFeeAmount(bundleNftId);
261
252
  unstakedAmount = balanceAmountWithFees - feeAmount;
262
- _componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
253
+ _accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
263
254
  }
264
255
  }
265
256
 
@@ -271,7 +262,7 @@ contract BundleService is
271
262
  )
272
263
  external
273
264
  virtual
274
- // TODO: restricted() (once #462 is done)
265
+ restricted()
275
266
  {
276
267
  _checkNftType(bundleNftId, BUNDLE());
277
268
 
@@ -284,7 +275,7 @@ contract BundleService is
284
275
  revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
285
276
  }
286
277
 
287
- _componentService.increaseBundleBalance(
278
+ _accountingService.increaseBundleBalance(
288
279
  instance.getInstanceStore(),
289
280
  bundleNftId,
290
281
  amount,
@@ -299,7 +290,7 @@ contract BundleService is
299
290
  )
300
291
  external
301
292
  virtual
302
- // TODO: restricted() (once #462 is done)
293
+ restricted()
303
294
  returns (Amount unstakedAmount)
304
295
  {
305
296
  _checkNftType(bundleNftId, BUNDLE());
@@ -324,7 +315,7 @@ contract BundleService is
324
315
  revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
325
316
  }
326
317
 
327
- _componentService.decreaseBundleBalance(
318
+ _accountingService.decreaseBundleBalance(
328
319
  instanceStore,
329
320
  bundleNftId,
330
321
  unstakedAmount,
@@ -335,7 +326,7 @@ contract BundleService is
335
326
  function extend(NftId bundleNftId, Seconds lifetimeExtension)
336
327
  external
337
328
  virtual
338
- // TODO: restricted() (once #462 is done)
329
+ restricted()
339
330
  returns (Timestamp extendedExpiredAt)
340
331
  {
341
332
  _checkNftType(bundleNftId, BUNDLE());
@@ -383,30 +374,12 @@ contract BundleService is
383
374
  instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
384
375
  }
385
376
 
386
- /// @dev unlinks policy from bundle
387
- function unlinkPolicy(
388
- IInstance instance,
389
- NftId policyNftId
390
- )
391
- external
392
- virtual
393
- restricted
394
- {
395
- _checkNftType(policyNftId, POLICY());
396
-
397
- // ensure policy is closeable
398
- if (!policyIsCloseable(instance, policyNftId)) {
399
- revert ErrorBundleServicePolicyNotCloseable(policyNftId);
400
- }
401
-
402
- instance.getBundleSet().unlinkPolicy(policyNftId);
403
- }
404
377
 
405
378
  /// @inheritdoc IBundleService
406
379
  function withdrawBundleFees(NftId bundleNftId, Amount amount)
407
380
  public
408
381
  virtual
409
- // TODO: restricted() (once #462 is done)
382
+ restricted()
410
383
  returns (Amount withdrawnAmount)
411
384
  {
412
385
  _checkNftType(bundleNftId, BUNDLE());
@@ -415,7 +388,7 @@ contract BundleService is
415
388
  InstanceReader reader = instance.getInstanceReader();
416
389
 
417
390
  IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
418
- address poolWallet = poolInfo.wallet;
391
+ address poolWallet = poolInfo.tokenHandler.getWallet();
419
392
 
420
393
  // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
421
394
 
@@ -433,9 +406,9 @@ contract BundleService is
433
406
  {
434
407
  InstanceStore store = instance.getInstanceStore();
435
408
  // decrease fee amount of the bundle
436
- _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
409
+ _accountingService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
437
410
  // decrease pool balance
438
- _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
411
+ _accountingService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
439
412
  }
440
413
 
441
414
  // transfer amount to bundle owner
@@ -446,47 +419,6 @@ contract BundleService is
446
419
  }
447
420
  }
448
421
 
449
- /// @inheritdoc IBundleService
450
- function policyIsCloseable(IInstance instance, NftId policyNftId)
451
- public
452
- view
453
- returns (bool isCloseable)
454
- {
455
- _checkNftType(policyNftId, POLICY());
456
-
457
- IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
458
-
459
- if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
460
- if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
461
- if (info.closedAt.gtz()) { return false; } // not closeable: already closed
462
- if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
463
-
464
- // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
465
- if (info.claimAmount == info.sumInsuredAmount) { return true; }
466
-
467
- // not closeable: not yet expired
468
- if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
469
-
470
- // all conditionsl to close the policy are met
471
- return true;
472
- }
473
-
474
- /// @dev links policy to bundle
475
- function _linkPolicy(IInstance instance, NftId policyNftId)
476
- internal
477
- {
478
- InstanceReader instanceReader = instance.getInstanceReader();
479
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
480
-
481
- // ensure policy has not yet been activated in a previous tx already
482
- if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
483
- revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
484
- }
485
-
486
- BundleSet bundleManager = instance.getBundleSet();
487
- bundleManager.linkPolicy(policyNftId);
488
- }
489
-
490
422
  function _getDomain() internal pure override returns(ObjectType) {
491
423
  return BUNDLE();
492
424
  }
@@ -13,6 +13,7 @@ import {Timestamp} from "../type/Timestamp.sol";
13
13
 
14
14
  interface IBundleService is IService {
15
15
 
16
+ event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
16
17
  event LogBundleServiceBundleActivated(NftId bundleNftId);
17
18
  event LogBundleServiceBundleLocked(NftId bundleNftId);
18
19
 
@@ -35,14 +36,10 @@ interface IBundleService is IService {
35
36
  event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
36
37
  event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
37
38
 
38
- /// @dev create a new bundle for the specified attributes
39
- /// may only be called by pool service
39
+ /// @dev Create a new bundle for the specified attributes.
40
40
  function create(
41
- IInstance instance, // instance relevant for bundle
42
- NftId poolNftId, // the pool the bundle will be linked to
43
41
  address owner, // initial bundle owner
44
42
  Fee memory fee, // fees deducted from premium that go to bundle owner
45
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
46
43
  Seconds lifetime, // initial duration for which new policies are covered
47
44
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
48
45
  )
@@ -116,28 +113,10 @@ interface IBundleService is IService {
116
113
  Amount collateralAmount
117
114
  ) external;
118
115
 
119
- /// @dev unlink policy from bundle
120
- /// policy may only be unlinked if policy is closeable
121
- /// may only be called by pool service
122
- function unlinkPolicy(
123
- IInstance instance,
124
- NftId policyNftId
125
- ) external;
126
-
127
116
  // FIXME: move to pool service
128
117
  /// @dev Withdraw bundle feeds for the given bundle
129
118
  /// @param bundleNftId the bundle Nft Id
130
119
  /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
131
120
  /// @return withdrawnAmount the effective withdrawn amount
132
121
  function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
133
-
134
- /// @dev returns true iff policy may be closed
135
- /// a policy can be closed all conditions below are met
136
- /// - policy exists
137
- /// - has been activated
138
- /// - is not yet closed
139
- /// - has no open claims
140
- /// - claim amount matches sum insured amount or is expired
141
- function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
142
-
143
122
  }