@etherisc/gif-next 0.0.2-f2b0fa2-473 → 0.0.2-f4f92b3-338

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. package/README.md +67 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +656 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +329 -90
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → components/IComponent.sol/IComponent.json} +171 -158
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +496 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +568 -2
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +596 -5
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +360 -118
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +342 -147
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  37. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  39. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  40. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  41. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  43. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  44. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
  45. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1657 -28
  47. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +162 -18
  49. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  50. package/artifacts/contracts/instance/Instance.sol/Instance.json +232 -632
  51. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +231 -114
  53. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +182 -58
  55. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +328 -67
  57. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  58. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +72 -23
  59. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  60. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  61. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +138 -16
  63. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  67. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  69. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  71. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1102 -0
  79. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +449 -0
  81. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +772 -0
  83. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +437 -0
  85. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IBundleService.sol/IBundleService.json} +295 -46
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +13 -18
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +766 -0
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +15 -82
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +25 -245
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1227 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +505 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +806 -0
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +437 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +856 -0
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +437 -0
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +339 -59
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +220 -111
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  114. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/Registry.sol/Registry.json +301 -188
  116. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  118. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -130
  120. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +51 -91
  122. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  124. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +394 -0
  126. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  127. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  129. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -5
  132. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  133. package/artifacts/contracts/shared/IService.sol/IService.json +13 -18
  134. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +19 -6
  137. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  138. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +19 -6
  139. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -11
  141. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Service.sol/Service.json +26 -18
  143. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  145. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  146. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +19 -11
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  152. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestService.sol/TestService.json +44 -36
  154. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  157. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  159. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  160. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  161. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  166. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  168. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  169. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  175. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  177. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  182. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  184. package/contracts/components/Component.sol +222 -0
  185. package/contracts/components/Distribution.sol +33 -55
  186. package/contracts/components/IComponent.sol +43 -0
  187. package/contracts/components/IDistributionComponent.sol +5 -1
  188. package/contracts/components/IPoolComponent.sol +11 -3
  189. package/contracts/components/IProductComponent.sol +7 -3
  190. package/contracts/components/Pool.sol +65 -83
  191. package/contracts/components/Product.sol +70 -109
  192. package/contracts/instance/BundleManager.sol +125 -0
  193. package/contracts/instance/Cloneable.sol +46 -0
  194. package/contracts/instance/IInstance.sol +54 -10
  195. package/contracts/instance/IInstanceService.sol +24 -1
  196. package/contracts/instance/Instance.sol +76 -243
  197. package/contracts/instance/InstanceAccessManager.sol +88 -78
  198. package/contracts/instance/InstanceReader.sol +34 -21
  199. package/contracts/instance/InstanceService.sol +311 -51
  200. package/contracts/instance/InstanceServiceManager.sol +10 -12
  201. package/contracts/instance/ObjectManager.sol +84 -0
  202. package/contracts/instance/base/ComponentService.sol +134 -0
  203. package/contracts/instance/module/IAccess.sol +27 -17
  204. package/contracts/instance/module/IBundle.sol +1 -0
  205. package/contracts/instance/module/ISetup.sol +3 -0
  206. package/contracts/instance/service/BundleService.sol +293 -0
  207. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  208. package/contracts/instance/service/DistributionService.sol +106 -0
  209. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  210. package/contracts/instance/service/IBundleService.sol +44 -0
  211. package/contracts/instance/service/IPolicyService.sol +94 -0
  212. package/contracts/instance/service/IPoolService.sol +6 -23
  213. package/contracts/instance/service/IProductService.sol +6 -73
  214. package/contracts/instance/service/PolicyService.sol +538 -0
  215. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  216. package/contracts/instance/service/PoolService.sol +109 -0
  217. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  218. package/contracts/instance/service/ProductService.sol +232 -0
  219. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  220. package/contracts/registry/ChainNft.sol +1 -1
  221. package/contracts/registry/IRegistry.sol +47 -6
  222. package/contracts/registry/IRegistryService.sol +44 -14
  223. package/contracts/registry/Registry.sol +243 -214
  224. package/contracts/registry/RegistryAccessManager.sol +216 -0
  225. package/contracts/registry/RegistryService.sol +81 -258
  226. package/contracts/registry/RegistryServiceManager.sol +20 -22
  227. package/contracts/registry/ReleaseManager.sol +332 -0
  228. package/contracts/registry/TokenRegistry.sol +112 -0
  229. package/contracts/shared/ERC165.sol +6 -2
  230. package/contracts/shared/IRegisterable.sol +1 -3
  231. package/contracts/shared/IService.sol +2 -1
  232. package/contracts/shared/NftOwnable.sol +7 -4
  233. package/contracts/shared/ProxyManager.sol +1 -1
  234. package/contracts/shared/Registerable.sol +11 -14
  235. package/contracts/shared/Service.sol +14 -8
  236. package/contracts/test/TestService.sol +3 -2
  237. package/contracts/types/NftIdSet.sol +26 -24
  238. package/contracts/types/RoleId.sol +14 -6
  239. package/contracts/types/StateId.sol +4 -0
  240. package/contracts/types/Version.sol +4 -1
  241. package/package.json +1 -1
  242. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  243. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -314
  244. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  245. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  246. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  247. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  248. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
  249. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  250. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  251. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  252. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  253. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  254. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  255. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  256. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  257. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  258. package/contracts/components/BaseComponent.sol +0 -86
  259. package/contracts/components/IBaseComponent.sol +0 -24
  260. package/contracts/instance/AccessManagedSimple.sol +0 -114
  261. package/contracts/instance/AccessManagerSimple.sol +0 -682
  262. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  263. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  264. package/contracts/instance/base/IInstanceBase.sol +0 -23
  265. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  266. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  267. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -1,42 +1,36 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {ObjectType, POOL} from "../types/ObjectType.sol";
5
- import {IProductService} from "../instance/service/IProductService.sol";
4
+ import {POOL} from "../types/ObjectType.sol";
6
5
  import {IPoolService} from "../instance/service/IPoolService.sol";
7
- import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
6
+ import {IBundleService} from "../instance/service/IBundleService.sol";
7
+ import {NftId, NftIdLib} from "../types/NftId.sol";
8
8
  import {Fee} from "../types/Fee.sol";
9
9
  import {UFixed} from "../types/UFixed.sol";
10
10
  import {IPoolComponent} from "./IPoolComponent.sol";
11
- import {BaseComponent} from "./BaseComponent.sol";
11
+ import {Component} from "./Component.sol";
12
12
  import {TokenHandler} from "../shared/TokenHandler.sol";
13
13
  import {ISetup} from "../instance/module/ISetup.sol";
14
14
 
15
- import {IRegistry} from "../registry/IRegistry.sol";
16
-
17
- // import {IPool} from "../instance/module/pool/IPoolModule.sol";
18
- import {ITreasury} from "../instance/module/ITreasury.sol";
19
15
  import {ISetup} from "../instance/module/ISetup.sol";
20
16
  import {InstanceReader} from "../instance/InstanceReader.sol";
21
17
 
22
- import {IRegisterable} from "../shared/IRegisterable.sol";
23
- import {Registerable} from "../shared/Registerable.sol";
24
18
 
25
- contract Pool is BaseComponent, IPoolComponent {
19
+ abstract contract Pool is Component, IPoolComponent {
26
20
  using NftIdLib for NftId;
27
21
 
28
- bool internal _isVerifying;
22
+ bool internal _isConfirmingApplication;
29
23
  UFixed internal _collateralizationLevel;
30
24
 
31
25
  Fee internal _initialPoolFee;
32
26
  Fee internal _initialStakingFee;
33
27
  Fee internal _initialPerformanceFee;
34
28
 
29
+ TokenHandler internal _tokenHandler;
30
+
35
31
  // may be used to interact with instance by derived contracts
36
32
  IPoolService internal _poolService;
37
-
38
- // only relevant to protect callback functions for "active" pools
39
- IProductService private _productService;
33
+ IBundleService private _bundleService;
40
34
 
41
35
  modifier onlyPoolService() {
42
36
  require(
@@ -45,39 +39,34 @@ contract Pool is BaseComponent, IPoolComponent {
45
39
  _;
46
40
  }
47
41
 
48
- modifier onlyProductService() {
49
- require(
50
- msg.sender == address(_productService),
51
- "ERROR:POL-002:NOT_PRODUCT_SERVICE");
52
- _;
53
- }
54
-
55
- constructor(
42
+ function __initialize(
56
43
  address registry,
57
44
  NftId instanceNftId,
58
- NftId productNftId,
45
+ string memory name,
59
46
  // TODO refactor into tokenNftId
60
47
  address token,
61
48
  bool isInterceptor,
62
- bool verifying,
49
+ bool isConfirmingApplication,
63
50
  UFixed collateralizationLevel,
64
51
  Fee memory poolFee,
65
52
  Fee memory stakingFee,
66
53
  Fee memory performanceFee,
67
- address initialOwner
68
- )
69
- BaseComponent(registry, instanceNftId, productNftId, token, POOL(), isInterceptor, initialOwner)
70
- {
71
- _isVerifying = verifying;
54
+ address initialOwner,
55
+ bytes memory data
56
+ ) internal {
57
+ _initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptor, initialOwner, data);
58
+
59
+ _isConfirmingApplication = isConfirmingApplication;
72
60
  // TODO add validation
73
61
  _collateralizationLevel = collateralizationLevel;
74
62
  _initialPoolFee = poolFee;
75
63
  _initialStakingFee = stakingFee;
76
64
  _initialPerformanceFee = performanceFee;
77
65
 
78
- // TODO: reactivate when services are available again
79
- // _poolService = _instance.getPoolService();
80
- // _productService = _instance.getProductService();
66
+ _tokenHandler = new TokenHandler(token);
67
+
68
+ _poolService = getInstance().getPoolService();
69
+ _bundleService = getInstance().getBundleService();
81
70
 
82
71
  _registerInterface(type(IPoolComponent).interfaceId);
83
72
  }
@@ -93,7 +82,7 @@ contract Pool is BaseComponent, IPoolComponent {
93
82
  returns(NftId bundleNftId)
94
83
  {
95
84
  address owner = msg.sender;
96
- bundleNftId = _poolService.createBundle(
85
+ bundleNftId = _bundleService.createBundle(
97
86
  owner,
98
87
  fee,
99
88
  initialAmount,
@@ -138,8 +127,8 @@ contract Pool is BaseComponent, IPoolComponent {
138
127
  }
139
128
 
140
129
 
141
- function isVerifying() external view override returns (bool verifying) {
142
- return _isVerifying;
130
+ function isConfirmingApplication() external view override returns (bool isConfirmingApplication) {
131
+ return _isConfirmingApplication;
143
132
  }
144
133
 
145
134
  function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
@@ -166,57 +155,50 @@ contract Pool is BaseComponent, IPoolComponent {
166
155
  override
167
156
  // TODO add onlyBundleOwner
168
157
  {
169
- _poolService.setBundleFee(bundleNftId, fee);
158
+ _bundleService.setBundleFee(bundleNftId, fee);
170
159
  }
171
160
 
172
- function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
173
- // TODO fix this
174
- if (getNftId().eq(zeroNftId())) {
175
- return ISetup.PoolSetupInfo(
176
- _productNftId,
177
- TokenHandler(address(0)),
178
- _collateralizationLevel,
179
- _initialPoolFee,
180
- _initialStakingFee,
181
- _initialPerformanceFee,
182
- _isVerifying,
183
- _wallet
184
- );
185
- }
186
-
187
- InstanceReader reader = _instance.getInstanceReader();
188
- return reader.getPoolSetupInfo(getNftId());
161
+ function lockBundle(
162
+ NftId bundleNftId
163
+ )
164
+ external
165
+ override
166
+ // TODO add onlyBundleOwner
167
+ {
168
+ _bundleService.lockBundle(bundleNftId);
189
169
  }
190
170
 
191
- // from IRegisterable
192
-
193
- // TODO used only once, occupies space
194
- // TODO do not use super
195
- function getInitialInfo()
196
- public
197
- view
198
- override (IRegisterable, Registerable)
199
- returns (IRegistry.ObjectInfo memory, bytes memory)
171
+ function unlockBundle(
172
+ NftId bundleNftId
173
+ )
174
+ external
175
+ override
176
+ // TODO add onlyBundleOwner
200
177
  {
201
- (
202
- IRegistry.ObjectInfo memory info,
203
- bytes memory data
204
- ) = super.getInitialInfo();
205
-
206
- return (
207
- info,
208
- abi.encode(
209
- ISetup.PoolSetupInfo(
210
- getProductNftId(),
211
- TokenHandler(address(0)),
212
- _collateralizationLevel,
213
- _initialPoolFee,
214
- _initialStakingFee,
215
- _initialPerformanceFee,
216
- _isVerifying,
217
- _wallet
218
- )
219
- )
178
+ _bundleService.unlockBundle(bundleNftId);
179
+ }
180
+
181
+ function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
182
+ InstanceReader reader = getInstance().getInstanceReader();
183
+ setupInfo = reader.getPoolSetupInfo(getNftId());
184
+
185
+ // fallback to initial setup info (wallet is always != address(0))
186
+ if(setupInfo.wallet == address(0)) {
187
+ setupInfo = _getInitialSetupInfo();
188
+ }
189
+ }
190
+
191
+ function _getInitialSetupInfo() internal view returns (ISetup.PoolSetupInfo memory) {
192
+ return ISetup.PoolSetupInfo(
193
+ getProductNftId(),
194
+ _tokenHandler,
195
+ _collateralizationLevel,
196
+ _initialPoolFee,
197
+ _initialStakingFee,
198
+ _initialPerformanceFee,
199
+ false,
200
+ _isConfirmingApplication,
201
+ getWallet()
220
202
  );
221
203
  }
222
204
 
@@ -248,7 +230,7 @@ contract Pool is BaseComponent, IPoolComponent {
248
230
  internal
249
231
  returns(NftId bundleNftId)
250
232
  {
251
- bundleNftId = _poolService.createBundle(
233
+ bundleNftId = _bundleService.createBundle(
252
234
  bundleOwner,
253
235
  fee,
254
236
  amount,
@@ -4,62 +4,63 @@ pragma solidity ^0.8.19;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {IRisk} from "../instance/module/IRisk.sol";
7
- import {ITreasury} from "../instance/module/ITreasury.sol";
8
- import {IProductService} from "../instance/service/IProductService.sol";
7
+ import {IPolicyService} from "../instance/service/IPolicyService.sol";
9
8
  import {IProductComponent} from "./IProductComponent.sol";
10
- import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
11
- import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
9
+ import {NftId, NftIdLib} from "../types/NftId.sol";
10
+ import {PRODUCT} from "../types/ObjectType.sol";
12
11
  import {ReferralId} from "../types/Referral.sol";
13
12
  import {RiskId, RiskIdLib} from "../types/RiskId.sol";
14
13
  import {StateId} from "../types/StateId.sol";
15
14
  import {Timestamp} from "../types/Timestamp.sol";
16
- import {Fee, FeeLib} from "../types/Fee.sol";
17
- import {BaseComponent} from "./BaseComponent.sol";
15
+ import {Fee} from "../types/Fee.sol";
16
+ import {Component} from "./Component.sol";
18
17
 
19
- import {IRegistry} from "../registry/IRegistry.sol";
20
- import {IRegisterable} from "../shared/IRegisterable.sol";
21
- import {Registerable} from "../shared/Registerable.sol";
22
18
  import {TokenHandler} from "../shared/TokenHandler.sol";
23
19
 
24
20
  import {InstanceReader} from "../instance/InstanceReader.sol";
25
21
  import {ISetup} from "../instance/module/ISetup.sol";
26
22
  import {Pool} from "../components/Pool.sol";
23
+ import {Distribution} from "../components/Distribution.sol";
27
24
 
28
- import {zeroNftId} from "../types/NftId.sol";
29
-
30
- contract Product is BaseComponent, IProductComponent {
25
+ abstract contract Product is Component, IProductComponent {
31
26
  using NftIdLib for NftId;
32
27
 
33
- IProductService internal _productService;
28
+ IPolicyService internal _policyService;
34
29
  Pool internal _pool;
35
- address internal _distribution;
30
+ Distribution internal _distribution;
36
31
  Fee internal _initialProductFee;
37
32
  Fee internal _initialProcessingFee;
33
+ TokenHandler internal _tokenHandler;
38
34
 
39
35
  NftId internal _poolNftId;
40
36
  NftId internal _distributionNftId;
41
37
 
42
- constructor(
38
+ function __initialize(
43
39
  address registry,
44
40
  NftId instanceNftid,
41
+ string memory name,
45
42
  address token,
46
43
  bool isInterceptor,
47
44
  address pool,
48
45
  address distribution,
49
46
  Fee memory productFee,
50
47
  Fee memory processingFee,
51
- address initialOwner
52
- ) BaseComponent(registry, instanceNftid, zeroNftId(), token, PRODUCT(), isInterceptor, initialOwner) {
48
+ address initialOwner,
49
+ bytes memory data
50
+ ) internal {
51
+ _initializeComponent(registry, instanceNftid, name, token, PRODUCT(), isInterceptor, initialOwner, data);
52
+
53
53
  // TODO add validation
54
- // TODO: reactivate when services are available again
55
- // _productService = _instance.getProductService();
54
+ _policyService = getInstance().getPolicyService();
56
55
  _pool = Pool(pool);
57
- _distribution = distribution;
56
+ _distribution = Distribution(distribution);
58
57
  _initialProductFee = productFee;
59
58
  _initialProcessingFee = processingFee;
60
59
 
60
+ _tokenHandler = new TokenHandler(token);
61
+
61
62
  _poolNftId = getRegistry().getNftId(address(_pool));
62
- _distributionNftId = getRegistry().getNftId(_distribution);
63
+ _distributionNftId = getRegistry().getNftId(address(_distribution));
63
64
 
64
65
  _registerInterface(type(IProductComponent).interfaceId);
65
66
  }
@@ -70,15 +71,15 @@ contract Product is BaseComponent, IProductComponent {
70
71
  RiskId riskId,
71
72
  uint256 lifetime,
72
73
  bytes memory applicationData,
73
- ReferralId referralId,
74
- NftId bundleNftId
74
+ NftId bundleNftId,
75
+ ReferralId referralId
75
76
  )
76
77
  external
77
78
  view
78
79
  override
79
80
  returns (uint256 premiumAmount)
80
81
  {
81
- (premiumAmount,,,,) = _productService.calculatePremium(
82
+ (premiumAmount,,,,) = _policyService.calculatePremium(
82
83
  riskId,
83
84
  sumInsuredAmount,
84
85
  lifetime,
@@ -112,19 +113,19 @@ contract Product is BaseComponent, IProductComponent {
112
113
  RiskId id,
113
114
  bytes memory data
114
115
  ) internal {
115
- _productService.createRisk(
116
+ getProductService().createRisk(
116
117
  id,
117
118
  data
118
119
  );
119
120
  }
120
121
 
121
- function _setRiskInfo(
122
+ function _updateRisk(
122
123
  RiskId id,
123
- IRisk.RiskInfo memory info
124
+ bytes memory data
124
125
  ) internal {
125
- _productService.setRiskInfo(
126
+ getProductService().updateRisk(
126
127
  id,
127
- info
128
+ data
128
129
  );
129
130
  }
130
131
 
@@ -132,14 +133,14 @@ contract Product is BaseComponent, IProductComponent {
132
133
  RiskId id,
133
134
  StateId state
134
135
  ) internal {
135
- _productService.updateRiskState(
136
+ getProductService().updateRiskState(
136
137
  id,
137
138
  state
138
139
  );
139
140
  }
140
141
 
141
142
  function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
142
- return _instance.getInstanceReader().getRiskInfo(id);
143
+ return getInstance().getInstanceReader().getRiskInfo(id);
143
144
  }
144
145
 
145
146
  function _createApplication(
@@ -151,7 +152,7 @@ contract Product is BaseComponent, IProductComponent {
151
152
  NftId bundleNftId,
152
153
  ReferralId referralId
153
154
  ) internal returns (NftId nftId) {
154
- nftId = _productService.createApplication(
155
+ nftId = _policyService.createApplication(
155
156
  applicationOwner,
156
157
  riskId,
157
158
  sumInsuredAmount,
@@ -169,7 +170,7 @@ contract Product is BaseComponent, IProductComponent {
169
170
  )
170
171
  internal
171
172
  {
172
- _productService.underwrite(
173
+ _policyService.underwrite(
173
174
  policyNftId,
174
175
  requirePremiumPayment,
175
176
  activateAt);
@@ -181,7 +182,7 @@ contract Product is BaseComponent, IProductComponent {
181
182
  )
182
183
  internal
183
184
  {
184
- _productService.collectPremium(
185
+ _policyService.collectPremium(
185
186
  policyNftId,
186
187
  activateAt);
187
188
  }
@@ -192,17 +193,25 @@ contract Product is BaseComponent, IProductComponent {
192
193
  )
193
194
  internal
194
195
  {
195
- _productService.activate(
196
+ _policyService.activate(
196
197
  policyNftId,
197
198
  activateAt);
198
199
  }
199
200
 
201
+ function _close(
202
+ NftId policyNftId
203
+ )
204
+ internal
205
+ {
206
+ _policyService.close(policyNftId);
207
+ }
208
+
200
209
  function getPoolNftId() external view override returns (NftId poolNftId) {
201
210
  return getRegistry().getNftId(address(_pool));
202
211
  }
203
212
 
204
213
  function getDistributionNftId() external view override returns (NftId distributionNftId) {
205
- return getRegistry().getNftId(_distribution);
214
+ return getRegistry().getNftId(address(_distribution));
206
215
  }
207
216
 
208
217
  // from product component
@@ -214,84 +223,36 @@ contract Product is BaseComponent, IProductComponent {
214
223
  onlyOwner
215
224
  override
216
225
  {
217
- _productService.setFees(productFee, processingFee);
226
+ getProductService().setFees(productFee, processingFee);
218
227
  }
219
228
 
220
229
  function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
221
- if (getNftId().eq(zeroNftId())) {
222
- return ISetup.ProductSetupInfo(
223
- _token,
224
- TokenHandler(address(0)),
225
- _distributionNftId,
226
- _poolNftId,
227
- FeeLib.zeroFee(), //_instance.getDistributionFee(_distributionNftId)
228
- _initialProductFee,
229
- _initialProcessingFee,
230
- FeeLib.zeroFee(), //_instance.getPoolFee(_poolNftId)
231
- FeeLib.zeroFee(), //_instance.getStakingFee(_poolNftId)
232
- FeeLib.zeroFee() //_instance.getPerformanceFee(_poolNftId)
233
- );
234
- }
235
-
236
- InstanceReader reader = _instance.getInstanceReader();
237
- return reader.getProductSetupInfo(getNftId());
238
- }
230
+ InstanceReader reader = getInstance().getInstanceReader();
231
+ setupInfo = reader.getProductSetupInfo(getNftId());
239
232
 
240
- // from IRegisterable
233
+ // fallback to initial setup info (wallet is always != address(0))
234
+ if(setupInfo.wallet == address(0)) {
235
+ setupInfo = _getInitialSetupInfo();
236
+ }
237
+ }
241
238
 
242
- // TODO used only once, occupies space
243
- function getInitialInfo()
244
- public
245
- view
246
- override (IRegisterable, Registerable)
247
- returns (IRegistry.ObjectInfo memory, bytes memory)
248
- {
249
- // from Registerable
250
- (
251
- IRegistry.ObjectInfo memory productInfo,
252
- bytes memory data
253
- ) = super.getInitialInfo();
254
-
255
- // TODO read pool & distribution fees
256
- // 1) from pool -> the only option -> pool must be registered first?
257
- // 2) from instance -> all fees are set into instance at product registration which is ongoing here
258
- // checks are done in registryProduct() where THIS function is called
259
- //require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
260
- //require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
261
-
262
- // from PoolComponent
263
- (
264
- IRegistry.ObjectInfo memory poolInfo,
265
- bytes memory poolData
266
- ) = _pool.getInitialInfo();
267
-
268
- (
269
- /*IPool.PoolInfo memory info*/,
270
- /*address wallet*/,
271
- /*IERC20Metadata token*/,
272
- Fee memory initialPoolFee,
273
- Fee memory initialStakingFee,
274
- Fee memory initialPerformanceFee
275
- ) = abi.decode(poolData, (ISetup.PoolSetupInfo, address, IERC20Metadata, Fee, Fee, Fee));
276
-
277
- // TODO from DistributionComponent
278
-
279
- return (
280
- productInfo,
281
- abi.encode(
282
- ISetup.ProductSetupInfo(
283
- _token,
284
- TokenHandler(address(0)),
285
- _distributionNftId,
286
- _poolNftId,
287
- FeeLib.zeroFee(), //_instance.getDistributionFee(_distributionNftId)
288
- _initialProductFee,
289
- _initialProcessingFee,
290
- initialPoolFee,
291
- initialStakingFee,
292
- initialPerformanceFee
293
- )
294
- )
239
+ function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
240
+ ISetup.DistributionSetupInfo memory distributionSetupInfo = _distribution.getSetupInfo();
241
+ ISetup.PoolSetupInfo memory poolSetupInfo = _pool.getSetupInfo();
242
+
243
+ return ISetup.ProductSetupInfo(
244
+ getToken(),
245
+ _tokenHandler,
246
+ _distributionNftId,
247
+ _poolNftId,
248
+ distributionSetupInfo.distributionFee,
249
+ _initialProductFee,
250
+ _initialProcessingFee,
251
+ poolSetupInfo.poolFee,
252
+ poolSetupInfo.stakingFee,
253
+ poolSetupInfo.performanceFee,
254
+ false,
255
+ getWallet()
295
256
  );
296
257
  }
297
258
  }
@@ -0,0 +1,125 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "./IInstance.sol";
5
+ import {INSTANCE} from "../types/ObjectType.sol";
6
+ import {InstanceReader} from "./InstanceReader.sol";
7
+ import {IPolicy} from "../instance/module/IPolicy.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {LibNftIdSet} from "../types/NftIdSet.sol";
10
+ import {NftId} from "../types/NftId.sol";
11
+ import {TimestampLib} from "../types/Timestamp.sol";
12
+
13
+ import {ObjectManager} from "./ObjectManager.sol";
14
+
15
+ contract BundleManager is
16
+ ObjectManager
17
+ {
18
+
19
+ event LogBundleManagerPolicyLinked(NftId bundleNftId, NftId policyNftId);
20
+ event LogBundleManagerPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
21
+
22
+ event LogBundleManagerBundleAdded(NftId poolNftId, NftId bundleNftId);
23
+ event LogBundleManagerBundleUnlocked(NftId poolNftId, NftId bundleNftId);
24
+ event LogBundleManagerBundleLocked(NftId poolNftId, NftId bundleNftId);
25
+
26
+ error ErrorBundleManagerErrorPolicyAlreadyActivated(NftId policyNftId);
27
+ error ErrorBundleManagerErrorBundleLocked(NftId bundleNftId, NftId policyNftId);
28
+ error ErrorBundleManagerPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
29
+ error ErrorBundleManagerPolicyNotCloseable(NftId policyNftId);
30
+ error ErrorBundleManagerBundleUnknown(NftId bundleNftId);
31
+ error ErrorBundleManagerBundleNotRegistered(NftId bundleNftId);
32
+
33
+ mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
34
+
35
+ /// @dev links a policy with its bundle
36
+ // to link a policy it MUST NOT yet have been activated
37
+ // the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
38
+ function linkPolicy(NftId policyNftId) external restricted() {
39
+ NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
40
+ // decision will likely depend on the decision what to check here and what in the service
41
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
42
+
43
+ // ensure bundle is unlocked (in active set) and registered with this instance
44
+ if (!_isActive(poolNftId, bundleNftId)) {
45
+ revert ErrorBundleManagerErrorBundleLocked(bundleNftId, policyNftId);
46
+ }
47
+
48
+ LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
49
+ emit LogBundleManagerPolicyLinked(bundleNftId, policyNftId);
50
+ }
51
+
52
+
53
+ /// @dev unlinks a policy from its bundle
54
+ // to unlink a policy it must closable, ie. meet one of the following criterias
55
+ // - the policy MUST be past its expiry period and it MUST NOT have any open claims
56
+ // - the policy's payoutAmount MUST be equal to its sumInsuredAmount and MUST NOT have any open claims
57
+ function unlinkPolicy(NftId policyNftId) external restricted() {
58
+ IPolicy.PolicyInfo memory policyInfo = _instance.getInstanceReader().getPolicyInfo(policyNftId);
59
+
60
+ NftId bundleNftId = policyInfo.bundleNftId;
61
+ // decision will likely depend on the decision what to check here and what in the service
62
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
63
+
64
+ // ensure bundle is registered with this instance
65
+ if (!_contains(poolNftId, bundleNftId)) {
66
+ revert ErrorBundleManagerBundleUnknown(bundleNftId);
67
+ }
68
+
69
+ LibNftIdSet.remove(_activePolicies[bundleNftId], policyNftId);
70
+ emit LogBundleManagerPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
71
+ }
72
+
73
+
74
+ /// @dev add a new bundle to a riskpool registerd with this instance
75
+ // the corresponding pool is fetched via instance reader
76
+ function add(NftId bundleNftId) external restricted() {
77
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
78
+
79
+ // ensure pool is registered with instance
80
+ if(poolNftId.eqz()) {
81
+ revert ErrorBundleManagerBundleNotRegistered(bundleNftId);
82
+ }
83
+
84
+ _add(poolNftId, bundleNftId);
85
+ emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
86
+ }
87
+
88
+ /// @dev unlocked (active) bundles are available to underwrite new policies
89
+ function unlock(NftId bundleNftId) external restricted() {
90
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
91
+ _activate(poolNftId, bundleNftId);
92
+ emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
93
+ }
94
+
95
+ /// @dev locked (deactivated) bundles may not underwrite any new policies
96
+ function lock(NftId bundleNftId) external restricted() {
97
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
98
+ _deactivate(poolNftId, bundleNftId);
99
+ emit LogBundleManagerBundleLocked(poolNftId, bundleNftId);
100
+ }
101
+
102
+ function bundles(NftId poolNftId) external view returns(uint256) {
103
+ return _objects(poolNftId);
104
+ }
105
+
106
+ function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId bundleNftId) {
107
+ return _getObject(poolNftId, idx);
108
+ }
109
+
110
+ function activeBundles(NftId poolNftId) external view returns(uint256) {
111
+ return _activeObjs(poolNftId);
112
+ }
113
+
114
+ function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId bundleNftId) {
115
+ return _getActiveObject(poolNftId, idx);
116
+ }
117
+
118
+ function activePolicies(NftId bundleNftId) external view returns(uint256) {
119
+ return LibNftIdSet.size(_activePolicies[bundleNftId]);
120
+ }
121
+
122
+ function getActivePolicy(NftId bundleNftId, uint256 idx) external view returns(NftId policyNftId) {
123
+ return LibNftIdSet.getElementAt(_activePolicies[bundleNftId], idx);
124
+ }
125
+ }