@etherisc/gif-next 0.0.2-7177fd8-761 → 0.0.2-71cf987-554

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 (452) hide show
  1. package/README.md +5 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +121 -70
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +124 -5
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -37
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +157 -273
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -239
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +188 -290
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -123
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -31
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  57. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
  59. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +248 -164
  61. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  63. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +446 -81
  65. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +85 -242
  67. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +79 -87
  69. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +335 -126
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  73. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +131 -247
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  91. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -80
  94. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  96. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +79 -227
  98. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  100. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  102. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -235
  104. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  106. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +170 -226
  108. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -110
  110. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
  112. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +91 -77
  114. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +232 -131
  116. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -222
  118. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +300 -319
  120. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -97
  122. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
  124. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
  126. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -243
  128. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  130. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +280 -235
  132. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +116 -112
  134. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  136. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
  138. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -16
  140. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  142. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +124 -97
  144. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  145. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  146. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -295
  148. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -131
  150. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
  152. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  154. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  155. package/artifacts/contracts/product/Product.sol/Product.json +136 -243
  156. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  158. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  160. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  162. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +289 -32
  164. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  166. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +495 -93
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +219 -166
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  176. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  177. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1696 -0
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +377 -235
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  186. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Component.sol/Component.json +68 -201
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +341 -324
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -132
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  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/IService.sol/IService.json +29 -0
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  216. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +79 -227
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  220. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  224. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  233. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  234. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +288 -16
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
  245. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  246. package/artifacts/contracts/staking/Staking.sol/Staking.json +167 -270
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +100 -97
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  254. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  256. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  258. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  267. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  269. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  271. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  273. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  275. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  277. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  279. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  281. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  283. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  285. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  287. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  289. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  291. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  295. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  302. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  304. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  306. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  307. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  308. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  309. package/contracts/authorization/AccessAdmin.sol +130 -120
  310. package/contracts/authorization/AccessManagerCloneable.sol +67 -3
  311. package/contracts/authorization/Authorization.sol +111 -40
  312. package/contracts/authorization/IAccess.sol +1 -0
  313. package/contracts/authorization/IAccessAdmin.sol +4 -4
  314. package/contracts/authorization/IAuthorization.sol +13 -7
  315. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  316. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  317. package/contracts/distribution/BasicDistribution.sol +2 -1
  318. package/contracts/distribution/Distribution.sol +7 -17
  319. package/contracts/distribution/DistributionService.sol +82 -50
  320. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  321. package/contracts/distribution/IDistributionComponent.sol +1 -1
  322. package/contracts/distribution/IDistributionService.sol +8 -2
  323. package/contracts/examples/fire/DamageLevel.sol +59 -0
  324. package/contracts/examples/fire/FirePool.sol +73 -0
  325. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  326. package/contracts/examples/fire/FireProduct.sol +415 -0
  327. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  328. package/contracts/examples/fire/FireUSD.sol +26 -0
  329. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  330. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  331. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  332. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  333. package/contracts/instance/IInstance.sol +10 -30
  334. package/contracts/instance/IInstanceService.sol +0 -20
  335. package/contracts/instance/Instance.sol +29 -51
  336. package/contracts/instance/InstanceAdmin.sol +102 -73
  337. package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
  338. package/contracts/instance/InstanceReader.sol +106 -19
  339. package/contracts/instance/InstanceService.sol +33 -88
  340. package/contracts/instance/InstanceServiceManager.sol +6 -7
  341. package/contracts/instance/InstanceStore.sol +11 -1
  342. package/contracts/instance/base/ObjectLifecycle.sol +7 -1
  343. package/contracts/instance/module/IComponents.sol +10 -5
  344. package/contracts/instance/module/IPolicy.sol +23 -23
  345. package/contracts/oracle/BasicOracle.sol +0 -1
  346. package/contracts/oracle/IOracleService.sol +2 -1
  347. package/contracts/oracle/Oracle.sol +6 -16
  348. package/contracts/oracle/OracleService.sol +47 -34
  349. package/contracts/oracle/OracleServiceManager.sol +6 -6
  350. package/contracts/pool/BasicPool.sol +14 -26
  351. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  352. package/contracts/pool/BundleService.sol +92 -36
  353. package/contracts/pool/BundleServiceManager.sol +6 -6
  354. package/contracts/pool/IBundleService.sol +10 -0
  355. package/contracts/pool/IPoolComponent.sol +18 -8
  356. package/contracts/pool/IPoolService.sol +49 -29
  357. package/contracts/pool/Pool.sol +53 -46
  358. package/contracts/pool/PoolService.sol +156 -136
  359. package/contracts/pool/PoolServiceManager.sol +4 -4
  360. package/contracts/product/ApplicationService.sol +22 -13
  361. package/contracts/product/ApplicationServiceManager.sol +4 -4
  362. package/contracts/product/BasicProduct.sol +7 -6
  363. package/contracts/product/BasicProductAuthorization.sol +0 -1
  364. package/contracts/product/ClaimService.sol +310 -115
  365. package/contracts/product/ClaimServiceManager.sol +4 -4
  366. package/contracts/product/IClaimService.sol +30 -7
  367. package/contracts/product/IPolicyService.sol +16 -20
  368. package/contracts/product/IPricingService.sol +10 -10
  369. package/contracts/product/IProductComponent.sol +23 -4
  370. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
  371. package/contracts/product/PolicyService.sol +220 -129
  372. package/contracts/product/PolicyServiceManager.sol +4 -4
  373. package/contracts/product/PricingService.sol +49 -53
  374. package/contracts/product/PricingServiceManager.sol +3 -3
  375. package/contracts/product/Product.sol +108 -66
  376. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  377. package/contracts/product/RiskServiceManager.sol +39 -0
  378. package/contracts/registry/ChainNft.sol +68 -38
  379. package/contracts/registry/IRegistry.sol +57 -18
  380. package/contracts/registry/IRegistryService.sol +5 -12
  381. package/contracts/registry/ITransferInterceptor.sol +1 -2
  382. package/contracts/registry/Registry.sol +342 -201
  383. package/contracts/registry/RegistryAdmin.sol +147 -179
  384. package/contracts/registry/RegistryService.sol +35 -46
  385. package/contracts/registry/RegistryServiceManager.sol +2 -2
  386. package/contracts/registry/ReleaseAdmin.sol +248 -0
  387. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  388. package/contracts/registry/ReleaseRegistry.sol +223 -203
  389. package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
  390. package/contracts/shared/Component.sol +36 -52
  391. package/contracts/shared/ComponentService.sol +245 -140
  392. package/contracts/shared/ComponentServiceManager.sol +8 -5
  393. package/contracts/shared/ComponentVerifyingService.sol +23 -14
  394. package/contracts/shared/ContractLib.sol +38 -0
  395. package/contracts/shared/IComponent.sol +6 -3
  396. package/contracts/shared/IComponentService.sol +25 -13
  397. package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
  398. package/contracts/shared/ILifecycle.sol +3 -1
  399. package/contracts/shared/INftOwnable.sol +2 -0
  400. package/contracts/shared/IPolicyHolder.sol +12 -22
  401. package/contracts/shared/IRegisterable.sol +11 -0
  402. package/contracts/shared/InitializableERC165.sol +2 -2
  403. package/contracts/shared/InstanceLinkedComponent.sol +72 -31
  404. package/contracts/shared/KeyValueStore.sol +1 -1
  405. package/contracts/shared/Lifecycle.sol +15 -4
  406. package/contracts/shared/NftOwnable.sol +27 -7
  407. package/contracts/shared/PolicyHolder.sol +15 -52
  408. package/contracts/shared/Registerable.sol +19 -9
  409. package/contracts/shared/RegistryLinked.sol +3 -2
  410. package/contracts/shared/Service.sol +20 -18
  411. package/contracts/shared/TokenHandler.sol +99 -22
  412. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  413. package/contracts/staking/IStaking.sol +2 -1
  414. package/contracts/staking/IStakingService.sol +0 -3
  415. package/contracts/staking/StakeManagerLib.sol +18 -25
  416. package/contracts/staking/Staking.sol +13 -32
  417. package/contracts/staking/StakingManager.sol +8 -6
  418. package/contracts/staking/StakingReader.sol +12 -5
  419. package/contracts/staking/StakingService.sol +17 -17
  420. package/contracts/staking/StakingServiceManager.sol +2 -2
  421. package/contracts/staking/TargetManagerLib.sol +7 -3
  422. package/contracts/type/Amount.sol +15 -0
  423. package/contracts/type/ClaimId.sol +6 -1
  424. package/contracts/type/NftId.sol +1 -0
  425. package/contracts/type/ObjectType.sol +16 -11
  426. package/contracts/type/PayoutId.sol +10 -10
  427. package/contracts/type/RiskId.sol +15 -1
  428. package/contracts/type/RoleId.sol +2 -11
  429. package/contracts/type/Seconds.sol +8 -0
  430. package/contracts/type/StateId.sol +15 -1
  431. package/contracts/type/UFixed.sol +4 -0
  432. package/contracts/upgradeability/ProxyManager.sol +68 -34
  433. package/contracts/upgradeability/Versionable.sol +2 -2
  434. package/package.json +2 -1
  435. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  436. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  437. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  438. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  439. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  440. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  441. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  442. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  443. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  444. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  445. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  446. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
  447. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
  448. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  449. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  450. package/contracts/product/ProductServiceManager.sol +0 -39
  451. package/contracts/shared/InitializableCustom.sol +0 -177
  452. package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -12,15 +12,15 @@ contract OracleServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with service implementation and deploys instance
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
- OracleService orclSrv = new OracleService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
23
- address(orclSrv),
19
+ OracleService svc = new OracleService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
24
  data,
25
25
  salt);
26
26
 
@@ -1,22 +1,14 @@
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 {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
6
- import {Fee, FeeLib} from "../type/Fee.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
7
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
8
- import {IBundleService} from "./IBundleService.sol";
9
- import {IPoolComponent} from "./IPoolComponent.sol";
10
- import {IPoolService} from "./IPoolService.sol";
11
- import {IComponents} from "../instance/module/IComponents.sol";
12
- import {IComponentService} from "../shared/IComponentService.sol";
13
- import {NftId, NftIdLib} from "../type/NftId.sol";
14
- import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
15
- import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {BUNDLE} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
16
10
  import {Seconds} from "../type/Seconds.sol";
17
11
  import {Timestamp} from "../type/Timestamp.sol";
18
- import {TokenHandler} from "../shared/TokenHandler.sol";
19
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
12
 
21
13
  import {Pool} from "./Pool.sol";
22
14
 
@@ -26,7 +18,7 @@ abstract contract BasicPool is
26
18
 
27
19
  function _initializeBasicPool(
28
20
  address registry,
29
- NftId instanceNftId,
21
+ NftId productNftId,
30
22
  IAuthorization authorization,
31
23
  address token,
32
24
  string memory name,
@@ -38,13 +30,12 @@ abstract contract BasicPool is
38
30
  {
39
31
  _initializePool(
40
32
  registry,
41
- instanceNftId,
33
+ productNftId,
42
34
  name,
43
35
  token,
44
36
  authorization,
45
37
  false, // isInterceptingNftTransfers,
46
38
  initialOwner,
47
- "", // registryData
48
39
  ""); // componentData
49
40
  }
50
41
 
@@ -56,6 +47,7 @@ abstract contract BasicPool is
56
47
  virtual
57
48
  restricted()
58
49
  onlyBundleOwner(bundleNftId)
50
+ onlyNftOfType(bundleNftId, BUNDLE())
59
51
  {
60
52
  _stake(bundleNftId, amount);
61
53
  }
@@ -69,6 +61,7 @@ abstract contract BasicPool is
69
61
  virtual
70
62
  restricted()
71
63
  onlyBundleOwner(bundleNftId)
64
+ onlyNftOfType(bundleNftId, BUNDLE())
72
65
  {
73
66
  _unstake(bundleNftId, amount);
74
67
  }
@@ -82,6 +75,7 @@ abstract contract BasicPool is
82
75
  virtual
83
76
  restricted()
84
77
  onlyBundleOwner(bundleNftId)
78
+ onlyNftOfType(bundleNftId, BUNDLE())
85
79
  returns(Timestamp newExpiredAt)
86
80
  {
87
81
  return _extend(bundleNftId, lifetimeExtension);
@@ -93,6 +87,7 @@ abstract contract BasicPool is
93
87
  virtual
94
88
  restricted()
95
89
  onlyBundleOwner(bundleNftId)
90
+ onlyNftOfType(bundleNftId, BUNDLE())
96
91
  {
97
92
  _lockBundle(bundleNftId);
98
93
  }
@@ -103,6 +98,7 @@ abstract contract BasicPool is
103
98
  virtual
104
99
  restricted()
105
100
  onlyBundleOwner(bundleNftId)
101
+ onlyNftOfType(bundleNftId, BUNDLE())
106
102
  {
107
103
  _unlockBundle(bundleNftId);
108
104
  }
@@ -113,6 +109,7 @@ abstract contract BasicPool is
113
109
  virtual
114
110
  restricted()
115
111
  onlyBundleOwner(bundleNftId)
112
+ onlyNftOfType(bundleNftId, BUNDLE())
116
113
  {
117
114
  _closeBundle(bundleNftId);
118
115
  }
@@ -126,6 +123,7 @@ abstract contract BasicPool is
126
123
  virtual
127
124
  restricted()
128
125
  onlyBundleOwner(bundleNftId)
126
+ onlyNftOfType(bundleNftId, BUNDLE())
129
127
  {
130
128
  _setBundleFee(bundleNftId, fee);
131
129
  }
@@ -141,16 +139,6 @@ abstract contract BasicPool is
141
139
  }
142
140
 
143
141
 
144
- function setBundleOwnerRole(RoleId bundleOwnerRole)
145
- public
146
- virtual
147
- restricted()
148
- onlyOwner()
149
- {
150
- _setBundleOwnerRole(bundleOwnerRole);
151
- }
152
-
153
-
154
142
  function setFees(
155
143
  Fee memory poolFee,
156
144
  Fee memory stakingFee,
@@ -44,7 +44,6 @@ contract BasicPoolAuthorization
44
44
  _authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
45
45
 
46
46
  _authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
47
- _authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
48
47
  _authorize(functions, BasicPool.setFees.selector, "setFees");
49
48
  _authorize(functions, BasicPool.stake.selector, "stake");
50
49
  _authorize(functions, BasicPool.unstake.selector, "unstake");
@@ -17,11 +17,10 @@ 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, REGISTRY} from "../type/ObjectType.sol";
20
+ import {ObjectType, 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";
24
- import {TokenTransferLib} from "../shared/TokenTransferLib.sol";
25
24
 
26
25
  string constant BUNDLE_SERVICE_NAME = "BundleService";
27
26
 
@@ -41,20 +40,20 @@ contract BundleService is
41
40
  bytes memory data
42
41
  )
43
42
  internal
44
- initializer
45
43
  virtual override
44
+ initializer()
46
45
  {
47
- address registryAddress;
48
- address initialOwner;
49
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
50
- // TODO while PoolService is not deployed in PoolServiceManager constructor
51
- // owner is PoolServiceManager deployer
52
- initializeService(registryAddress, address(0), owner);
46
+ (
47
+ address registryAddress,
48
+ address authority
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ _initializeService(registryAddress, authority, owner);
53
52
 
54
53
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
55
54
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
56
55
 
57
- registerInterface(type(IBundleService).interfaceId);
56
+ _registerInterface(type(IBundleService).interfaceId);
58
57
  }
59
58
 
60
59
 
@@ -65,6 +64,8 @@ contract BundleService is
65
64
  external
66
65
  virtual
67
66
  {
67
+ _checkNftType(bundleNftId, BUNDLE());
68
+
68
69
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
69
70
  InstanceReader instanceReader = instance.getInstanceReader();
70
71
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
@@ -95,6 +96,8 @@ contract BundleService is
95
96
  restricted
96
97
  returns(NftId bundleNftId)
97
98
  {
99
+ _checkNftType(poolNftId, POOL());
100
+
98
101
  // register bundle with registry
99
102
  bundleNftId = _registryService.registerBundle(
100
103
  IRegistry.ObjectInfo(
@@ -122,12 +125,14 @@ contract BundleService is
122
125
  })
123
126
  );
124
127
 
125
- // bundle book keeping
126
- _componentService.increaseBundleBalance(
127
- instanceStore,
128
- bundleNftId,
129
- stakingAmount,
130
- AmountLib.zero()); // fee amount
128
+ if (stakingAmount.gtz()) {
129
+ // bundle book keeping
130
+ _componentService.increaseBundleBalance(
131
+ instanceStore,
132
+ bundleNftId,
133
+ stakingAmount,
134
+ AmountLib.zero()); // fee amount
135
+ }
131
136
 
132
137
  // put bundle under bundle managemet
133
138
  BundleSet bundleManager = instance.getBundleSet();
@@ -147,26 +152,35 @@ contract BundleService is
147
152
  virtual
148
153
  restricted()
149
154
  {
155
+ _checkNftType(policyNftId, POLICY());
156
+ _checkNftType(bundleNftId, BUNDLE());
157
+
150
158
  InstanceReader instanceReader = instance.getInstanceReader();
151
- StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
152
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
153
159
 
154
- // ensure bundle is active and not yet expired
155
- if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
156
- revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
160
+ {
161
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
162
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
163
+
164
+ // ensure bundle is active and not yet expired
165
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
166
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
167
+ }
157
168
  }
158
169
 
159
- // ensure bundle capacity is sufficent to collateralize policy
160
170
  InstanceStore instanceStore = instance.getInstanceStore();
161
- (
162
- Amount balanceAmount,
163
- Amount lockedAmount,
164
- Amount feeAmount
165
- ) = instanceStore.getAmounts(bundleNftId);
166
171
 
167
- Amount capacity = balanceAmount - (lockedAmount + feeAmount);
168
- if(capacity < collateralAmount) {
169
- revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
172
+ {
173
+ // ensure bundle capacity is sufficent to collateralize policy
174
+ (
175
+ Amount balanceAmount,
176
+ Amount lockedAmount,
177
+ Amount feeAmount
178
+ ) = instanceStore.getAmounts(bundleNftId);
179
+
180
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
181
+ if(capacity < collateralAmount) {
182
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
183
+ }
170
184
  }
171
185
 
172
186
  // updated locked amount
@@ -181,6 +195,8 @@ contract BundleService is
181
195
  external
182
196
  virtual
183
197
  {
198
+ _checkNftType(bundleNftId, BUNDLE());
199
+
184
200
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
185
201
 
186
202
  // udpate bundle state
@@ -198,6 +214,8 @@ contract BundleService is
198
214
  external
199
215
  virtual
200
216
  {
217
+ _checkNftType(bundleNftId, BUNDLE());
218
+
201
219
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
202
220
 
203
221
  // udpate bundle state
@@ -220,6 +238,8 @@ contract BundleService is
220
238
  restricted
221
239
  returns (Amount unstakedAmount, Amount feeAmount)
222
240
  {
241
+ _checkNftType(bundleNftId, BUNDLE());
242
+
223
243
  InstanceReader instanceReader = instance.getInstanceReader();
224
244
 
225
245
  // ensure no open policies attached to bundle
@@ -253,6 +273,8 @@ contract BundleService is
253
273
  virtual
254
274
  // TODO: restricted() (once #462 is done)
255
275
  {
276
+ _checkNftType(bundleNftId, BUNDLE());
277
+
256
278
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
257
279
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
258
280
 
@@ -280,6 +302,8 @@ contract BundleService is
280
302
  // TODO: restricted() (once #462 is done)
281
303
  returns (Amount unstakedAmount)
282
304
  {
305
+ _checkNftType(bundleNftId, BUNDLE());
306
+
283
307
  InstanceStore instanceStore = instance.getInstanceStore();
284
308
  (
285
309
  Amount balanceAmount,
@@ -287,7 +311,7 @@ contract BundleService is
287
311
  Amount feeAmount
288
312
  ) = instanceStore.getAmounts(bundleNftId);
289
313
 
290
- Amount unstakedAmount = amount;
314
+ unstakedAmount = amount;
291
315
  Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
292
316
 
293
317
  // if amount is max, then unstake all available
@@ -305,8 +329,6 @@ contract BundleService is
305
329
  bundleNftId,
306
330
  unstakedAmount,
307
331
  AmountLib.zero());
308
-
309
- return unstakedAmount;
310
332
  }
311
333
 
312
334
  /// @inheritdoc IBundleService
@@ -316,6 +338,8 @@ contract BundleService is
316
338
  // TODO: restricted() (once #462 is done)
317
339
  returns (Timestamp extendedExpiredAt)
318
340
  {
341
+ _checkNftType(bundleNftId, BUNDLE());
342
+
319
343
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
320
344
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
321
345
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
@@ -353,6 +377,9 @@ contract BundleService is
353
377
  virtual
354
378
  restricted()
355
379
  {
380
+ _checkNftType(policyNftId, POLICY());
381
+ _checkNftType(bundleNftId, BUNDLE());
382
+
356
383
  instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
357
384
  }
358
385
 
@@ -365,8 +392,10 @@ contract BundleService is
365
392
  virtual
366
393
  restricted
367
394
  {
395
+ _checkNftType(policyNftId, POLICY());
396
+
368
397
  // ensure policy is closeable
369
- if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
398
+ if (!policyIsCloseable(instance, policyNftId)) {
370
399
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
371
400
  }
372
401
 
@@ -380,13 +409,15 @@ contract BundleService is
380
409
  // TODO: restricted() (once #462 is done)
381
410
  returns (Amount withdrawnAmount)
382
411
  {
412
+ _checkNftType(bundleNftId, BUNDLE());
413
+
383
414
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
384
415
  InstanceReader reader = instance.getInstanceReader();
385
416
 
386
417
  IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
387
418
  address poolWallet = poolInfo.wallet;
388
419
 
389
- IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
420
+ // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
390
421
 
391
422
  // determine withdrawn amount
392
423
  withdrawnAmount = amount;
@@ -411,10 +442,35 @@ contract BundleService is
411
442
  {
412
443
  address owner = getRegistry().ownerOf(bundleNftId);
413
444
  emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
414
- TokenTransferLib.distributeTokens(poolWallet, owner, withdrawnAmount, poolInfo.tokenHandler);
445
+ poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
415
446
  }
416
447
  }
417
448
 
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
+
418
474
  /// @dev links policy to bundle
419
475
  function _linkPolicy(IInstance instance, NftId policyNftId)
420
476
  internal
@@ -12,15 +12,15 @@ contract BundleServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with pool service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
- BundleService bundleSrv = new BundleService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
23
- address(bundleSrv),
19
+ BundleService svc = new BundleService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
24
  data,
25
25
  salt);
26
26
 
@@ -124,10 +124,20 @@ interface IBundleService is IService {
124
124
  NftId policyNftId
125
125
  ) external;
126
126
 
127
+ // FIXME: move to pool service
127
128
  /// @dev Withdraw bundle feeds for the given bundle
128
129
  /// @param bundleNftId the bundle Nft Id
129
130
  /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
130
131
  /// @return withdrawnAmount the effective withdrawn amount
131
132
  function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
132
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
+
133
143
  }
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
+ import {ClaimId} from "../type/ClaimId.sol";
5
6
  import {Fee} from "../type/Fee.sol";
6
7
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
8
  import {IComponents} from "../instance/module/IComponents.sol";
@@ -20,10 +21,10 @@ interface IPoolComponent is IInstanceLinkedComponent {
20
21
 
21
22
  event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
22
23
 
23
- /// @dev this is a callback function that is called by the product service when underwriting a policy.
24
- /// the pool has the option to check the details and object to underwriting by reverting.
25
- /// the function is only called for "active" pools that ask to be involved/notified
26
- /// by product related state changes.
24
+ /// @dev This is a callback function that is called by the product service when underwriting a policy.
25
+ /// The pool has the option to check the details and object to underwriting by reverting.
26
+ /// The function is only called for "active" pools that ask to be involved/notified.
27
+ /// The default implementation is empty.
27
28
  function verifyApplication(
28
29
  NftId applicationNftId,
29
30
  bytes memory applicationData,
@@ -32,9 +33,9 @@ interface IPoolComponent is IInstanceLinkedComponent {
32
33
  Amount collateralizationAmount
33
34
  ) external;
34
35
 
35
- /// @dev returns true iff the application matches with the bundle
36
- /// this is a callback function that is only called if a pool declares itself as a verifying pool
37
- /// default implementation returns true
36
+ /// @dev Returns true iff the application matches with the bundle.
37
+ /// This is a callback function that is only called if a pool declares itself as a verifying pool
38
+ /// The default implementation returns true.
38
39
  function applicationMatchesBundle(
39
40
  NftId applicationNftId,
40
41
  bytes memory applicationData,
@@ -46,13 +47,22 @@ interface IPoolComponent is IInstanceLinkedComponent {
46
47
  view
47
48
  returns (bool isMatching);
48
49
 
50
+ /// @dev This is a callback function that is called by the claim service when a claim is confirmed.
51
+ /// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
52
+ /// The default implementation is empty.
53
+ function processConfirmedClaim(
54
+ NftId policyNftId,
55
+ ClaimId claimId,
56
+ Amount amount
57
+ ) external;
58
+
49
59
  /// @dev Withdraw bundle feeds for the given bundle
50
60
  /// @param bundleNftId the bundle Nft Id
51
61
  /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
52
62
  /// @return withdrawnAmount the effective withdrawn amount
53
63
  function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
54
64
 
55
- /// @dev returns initial pool specific infos for this pool
65
+ /// @dev Returns initial pool specific infos for this pool
56
66
  function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
57
67
 
58
68
  }