@etherisc/gif-next 0.0.2-dc95063-418 → 0.0.2-dd40550-413

Sign up to get free protection for your applications and to get access to all the features.
Files changed (266) hide show
  1. package/README.md +6 -83
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +47 -6
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +70 -13
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +137 -6
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +144 -13
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +161 -20
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +151 -20
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +71 -20
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +62 -21
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  21. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +310 -2004
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +101 -52
  25. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  26. package/artifacts/contracts/instance/Instance.sol/Instance.json +425 -2757
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +95 -58
  29. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  30. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +348 -58
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +153 -207
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +38 -83
  37. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  38. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  40. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +113 -34
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +8 -8
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +6 -6
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +6 -6
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +186 -236
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +38 -55
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +377 -182
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -39
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +710 -88
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +143 -32
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +266 -442
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +82 -107
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +111 -174
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +233 -128
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +385 -51
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +109 -282
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +210 -99
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +682 -33
  86. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
  88. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +85 -27
  90. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +420 -160
  92. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +104 -53
  94. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +880 -82
  96. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +90 -39
  98. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
  100. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  102. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +144 -57
  104. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +28 -37
  106. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  109. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -37
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  114. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +22 -49
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +10 -23
  123. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  124. package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
  125. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  126. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  127. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  129. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  131. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  133. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  134. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  135. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IService.sol/IService.json +85 -27
  137. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  139. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -19
  140. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  141. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  142. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  143. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
  144. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +6 -19
  146. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  147. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  148. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  149. package/artifacts/contracts/shared/Service.sol/Service.json +91 -28
  150. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  151. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  152. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  153. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  156. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +6 -19
  158. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  160. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestService.sol/TestService.json +106 -39
  162. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  165. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  166. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  167. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  168. package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
  169. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +83 -4
  173. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  175. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/Fee.sol/FeeLib.json +74 -19
  177. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  179. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  181. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  182. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  183. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  186. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +116 -7
  188. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  190. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  192. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  194. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  197. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +17 -4
  199. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  203. package/contracts/components/Component.sol +25 -4
  204. package/contracts/components/Distribution.sol +11 -6
  205. package/contracts/components/IComponent.sol +19 -3
  206. package/contracts/components/IPoolComponent.sol +8 -7
  207. package/contracts/components/IProductComponent.sol +5 -4
  208. package/contracts/components/Pool.sol +17 -14
  209. package/contracts/components/Product.sol +144 -62
  210. package/contracts/instance/BundleManager.sol +3 -4
  211. package/contracts/instance/IInstance.sol +32 -53
  212. package/contracts/instance/IInstanceService.sol +15 -14
  213. package/contracts/instance/Instance.sol +107 -205
  214. package/contracts/instance/InstanceAccessManager.sol +44 -25
  215. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  216. package/contracts/instance/InstanceReader.sol +85 -7
  217. package/contracts/instance/InstanceService.sol +102 -289
  218. package/contracts/instance/InstanceStore.sol +212 -0
  219. package/contracts/instance/ObjectManager.sol +1 -1
  220. package/contracts/instance/base/ComponentService.sol +53 -39
  221. package/contracts/instance/base/KeyValueStore.sol +8 -34
  222. package/contracts/instance/base/Lifecycle.sol +15 -4
  223. package/contracts/instance/module/IAccess.sol +2 -2
  224. package/contracts/instance/module/IBundle.sol +6 -4
  225. package/contracts/instance/module/IComponents.sol +7 -1
  226. package/contracts/instance/module/IDistribution.sol +3 -2
  227. package/contracts/instance/module/IPolicy.sol +13 -8
  228. package/contracts/instance/service/ApplicationService.sol +62 -226
  229. package/contracts/instance/service/BundleService.sol +172 -126
  230. package/contracts/instance/service/ClaimService.sol +318 -32
  231. package/contracts/instance/service/DistributionService.sol +71 -190
  232. package/contracts/instance/service/IApplicationService.sol +8 -28
  233. package/contracts/instance/service/IBundleService.sol +82 -26
  234. package/contracts/instance/service/IClaimService.sol +52 -23
  235. package/contracts/instance/service/IDistributionService.sol +11 -22
  236. package/contracts/instance/service/IPolicyService.sol +24 -16
  237. package/contracts/instance/service/IPoolService.sol +82 -3
  238. package/contracts/instance/service/IPricingService.sol +37 -0
  239. package/contracts/instance/service/PolicyService.sol +152 -179
  240. package/contracts/instance/service/PoolService.sol +239 -56
  241. package/contracts/instance/service/PricingService.sol +275 -0
  242. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  243. package/contracts/instance/service/ProductService.sol +27 -58
  244. package/contracts/registry/IRegistryService.sol +2 -3
  245. package/contracts/registry/RegistryService.sol +24 -21
  246. package/contracts/registry/ReleaseManager.sol +20 -18
  247. package/contracts/shared/IPolicyHolder.sol +23 -9
  248. package/contracts/shared/IRegistryLinked.sol +0 -1
  249. package/contracts/shared/IService.sol +6 -6
  250. package/contracts/shared/NftOwnable.sol +0 -2
  251. package/contracts/shared/PolicyHolder.sol +30 -17
  252. package/contracts/shared/Registerable.sol +10 -9
  253. package/contracts/shared/RegistryLinked.sol +0 -5
  254. package/contracts/shared/Service.sol +21 -7
  255. package/contracts/shared/TokenHandler.sol +4 -2
  256. package/contracts/test/TestService.sol +1 -1
  257. package/contracts/types/Amount.sol +109 -0
  258. package/contracts/types/ClaimId.sol +25 -2
  259. package/contracts/types/Fee.sol +16 -8
  260. package/contracts/types/ObjectType.sol +9 -5
  261. package/contracts/types/PayoutId.sol +33 -5
  262. package/contracts/types/StateId.sol +6 -2
  263. package/contracts/types/Timestamp.sol +5 -0
  264. package/package.json +1 -1
  265. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  266. /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
@@ -16,6 +16,7 @@ import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
16
16
  import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
17
17
  import {Pool} from "../../components/Pool.sol";
18
18
 
19
+ import {Amount, AmountLib} from "../../types/Amount.sol";
19
20
  import {Fee, FeeLib} from "../../types/Fee.sol";
20
21
  import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../../types/StateId.sol";
21
22
  import {Seconds} from "../../types/Seconds.sol";
@@ -57,41 +58,73 @@ contract BundleService is
57
58
  (registryAddress, initialOwner) = abi.decode(data, (address, address));
58
59
  // TODO while PoolService is not deployed in PoolServiceManager constructor
59
60
  // owner is PoolServiceManager deployer
60
- initializeService(registryAddress, owner);
61
+ initializeService(registryAddress, address(0), owner);
61
62
  registerInterface(type(IBundleService).interfaceId);
62
63
  }
63
64
 
64
- function getDomain() public pure override(Service, IService) returns(ObjectType) {
65
+ function getDomain() public pure override returns(ObjectType) {
65
66
  return BUNDLE();
66
67
  }
67
68
 
69
+ // TODO staking/unstaking as well as collateralize need to go to pool service
70
+ // it will also be the pool service that is updating the pool info data
71
+ // collateralize -> potentially accumulate pool fees
72
+ // collateralize: additional reason to move to pool, pool might has retential level < 1 ...
73
+ // staking -> potentially accumulate staking fees
74
+ // unstaking -> potentially accumulate performance fees
75
+ function _updatePoolWithStakes(
76
+ IInstance instance,
77
+ NftId poolNftId,
78
+ Amount stakingAmount
79
+ )
80
+ internal
81
+ returns (
82
+ TokenHandler tokenHandler,
83
+ address wallet,
84
+ Amount netStakingAmount
85
+ )
86
+ {
87
+ if(stakingAmount.gtz()) {
88
+ InstanceReader instanceReader = instance.getInstanceReader();
89
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
90
+
91
+ tokenHandler = componentInfo.tokenHandler;
92
+ wallet = componentInfo.wallet;
93
+
94
+ IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
95
+ Amount poolFeeAmount;
96
+
97
+ // calculate pool fee and net staking amount
98
+ (poolFeeAmount, netStakingAmount) = FeeLib.calculateFee(poolInfo.stakingFee, stakingAmount);
99
+
100
+ // update pool balance and fee amount
101
+ poolInfo.balanceAmount = poolInfo.balanceAmount + netStakingAmount;
102
+
103
+ if(poolFeeAmount.gtz()) {
104
+ poolInfo.feeAmount = poolInfo.feeAmount + poolFeeAmount;
105
+ }
106
+
107
+ // save updated pool info
108
+ componentInfo.data = abi.encode(poolInfo);
109
+ instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
110
+ }
111
+ }
112
+
113
+
68
114
  function create(
115
+ IInstance instance,
116
+ NftId poolNftId,
69
117
  address owner,
70
- Fee memory fee,
71
- uint256 stakingAmount,
118
+ Fee memory bundleFee,
119
+ Amount stakingAmount,
72
120
  Seconds lifetime,
73
121
  bytes calldata filter
74
122
  )
75
123
  external
76
124
  override
125
+ // TODO add restricted and add authz for pool service
77
126
  returns(NftId bundleNftId)
78
127
  {
79
- (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
80
- InstanceReader instanceReader = instance.getInstanceReader();
81
- NftId poolNftId = info.nftId;
82
-
83
- IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
84
- poolNftId,
85
- fee,
86
- filter,
87
- stakingAmount,
88
- 0,
89
- stakingAmount,
90
- lifetime,
91
- zeroTimestamp(),
92
- zeroTimestamp()
93
- );
94
-
95
128
  // register bundle with registry
96
129
  bundleNftId = getRegistryService().registerBundle(
97
130
  IRegistry.ObjectInfo(
@@ -101,25 +134,32 @@ contract BundleService is
101
134
  false, // intercepting property for bundles is defined on pool
102
135
  address(0),
103
136
  owner,
104
- abi.encode(bundleInfo)
137
+ "" // bundle data to be stored in registry
105
138
  )
106
139
  );
107
140
 
108
141
  // create bundle info in instance
109
- instance.createBundle(bundleNftId, bundleInfo);
110
-
142
+ instance.getInstanceStore().createBundle(
143
+ bundleNftId,
144
+ IBundle.BundleInfo(
145
+ poolNftId,
146
+ bundleFee,
147
+ filter,
148
+ stakingAmount,
149
+ AmountLib.zero(),
150
+ AmountLib.zero(),
151
+ lifetime,
152
+ TimestampLib.blockTimestamp().addSeconds(lifetime),
153
+ zeroTimestamp()));
154
+
155
+ // put bundle under bundle managemet
111
156
  BundleManager bundleManager = instance.getBundleManager();
112
157
  bundleManager.add(bundleNftId);
113
-
114
- _processStakingByTreasury(
115
- instanceReader,
116
- poolNftId,
117
- bundleNftId,
118
- stakingAmount);
119
158
 
120
159
  // TODO add logging
121
160
  }
122
161
 
162
+
123
163
  function setFee(
124
164
  NftId bundleNftId,
125
165
  Fee memory fee
@@ -127,56 +167,105 @@ contract BundleService is
127
167
  external
128
168
  override
129
169
  {
130
- (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
170
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
131
171
  InstanceReader instanceReader = instance.getInstanceReader();
132
- NftId poolNftId = info.nftId;
133
-
134
172
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
135
- require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
136
- require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
173
+ if(bundleInfo.poolNftId.eqz()) {
174
+ revert ErrorBundleServiceBundleUnknown(bundleNftId);
175
+ }
137
176
 
138
- bundleInfo.fee = fee;
177
+ if(bundleInfo.poolNftId != poolNftId) {
178
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
179
+ }
139
180
 
140
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
181
+ bundleInfo.fee = fee;
182
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
141
183
  }
142
184
 
143
185
 
186
+ // the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
144
187
  function lockCollateral(
145
188
  IInstance instance,
146
189
  NftId policyNftId,
147
190
  NftId bundleNftId,
148
- uint256 collateralAmount,
149
- uint256 netPremiumAmount
191
+ Amount collateralAmount, // required amount to collateralize policy
192
+ Amount premiumAmount // premium part that reaches bundle for this policy
150
193
  )
151
194
  external
152
- onlyService
153
- returns (
154
- IBundle.BundleInfo memory bundleInfo
155
- )
195
+ onlyService // TODO replace with restricted + appropriate granting
156
196
  {
157
197
  InstanceReader instanceReader = instance.getInstanceReader();
158
- bundleInfo = instanceReader.getBundleInfo(bundleNftId);
198
+ StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
199
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
200
+
201
+ // ensure bundle is active and not yet expired
202
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
203
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
204
+ }
159
205
 
160
- // TODO add validation
206
+ // ensure bundle capacity is sufficent to collateralize policy
207
+ Amount capacity = bundleInfo.capitalAmount + premiumAmount - bundleInfo.lockedAmount;
208
+ if(capacity < collateralAmount) {
209
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
210
+ }
161
211
 
162
- // lock collateral
163
- bundleInfo.lockedAmount += collateralAmount;
164
- bundleInfo.balanceAmount += netPremiumAmount;
212
+ // TODO add more validation
213
+
214
+ // updated locked amount
215
+ bundleInfo.lockedAmount = bundleInfo.lockedAmount + collateralAmount;
165
216
 
166
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
217
+ // update capital and fees when premiums are involved
218
+ _updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
167
219
 
168
- linkPolicy(instance, policyNftId);
220
+ // link policy to bundle in bundle manger
221
+ _linkPolicy(instance, policyNftId);
169
222
  }
170
223
 
171
224
 
225
+ function _updateBundleWithPremium(
226
+ IInstance instance,
227
+ NftId bundleNftId,
228
+ IBundle.BundleInfo memory bundleInfo,
229
+ Amount premiumAmount
230
+ )
231
+ internal
232
+ {
233
+ // update bundle capital and fee amounts
234
+ if(premiumAmount.gtz()) {
235
+ // calculate fees and net premium amounts
236
+ (
237
+ ,
238
+ Amount netPremiumAmount
239
+ ) = FeeLib.calculateFee(bundleInfo.fee, premiumAmount);
240
+
241
+ // update bundle info with additional capital
242
+ bundleInfo.capitalAmount = bundleInfo.capitalAmount + netPremiumAmount;
243
+ }
244
+
245
+ // save updated bundle info
246
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
247
+ }
248
+
249
+ function updateBundleFees(
250
+ IInstance instance,
251
+ NftId bundleNftId,
252
+ Amount feeAmount
253
+ )
254
+ external
255
+ {
256
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
257
+ bundleInfo.feeAmount = bundleInfo.feeAmount.add(feeAmount);
258
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
259
+ }
260
+
172
261
  function lock(NftId bundleNftId)
173
262
  external
174
263
  virtual
175
264
  {
176
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
265
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
177
266
 
178
267
  // udpate bundle state
179
- instance.updateBundleState(bundleNftId, PAUSED());
268
+ instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
180
269
 
181
270
  // update set of active bundles
182
271
  BundleManager bundleManager = instance.getBundleManager();
@@ -190,10 +279,10 @@ contract BundleService is
190
279
  external
191
280
  virtual
192
281
  {
193
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
282
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
194
283
 
195
284
  // udpate bundle state
196
- instance.updateBundleState(bundleNftId, ACTIVE());
285
+ instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
197
286
 
198
287
  // update set of active bundles
199
288
  BundleManager bundleManager = instance.getBundleManager();
@@ -203,14 +292,16 @@ contract BundleService is
203
292
  }
204
293
 
205
294
 
206
- function close(NftId bundleNftId)
295
+ function close(
296
+ IInstance instance,
297
+ NftId bundleNftId
298
+ )
207
299
  external
208
300
  virtual
301
+ // TODO add restricted and autz for pool service
209
302
  {
210
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
211
-
212
303
  // udpate bundle state
213
- instance.updateBundleState(bundleNftId, CLOSED());
304
+ instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
214
305
 
215
306
  // ensure no open policies attached to bundle
216
307
  BundleManager bundleManager = instance.getBundleManager();
@@ -221,14 +312,13 @@ contract BundleService is
221
312
 
222
313
  // update set of active bundles
223
314
  bundleManager.lock(bundleNftId);
224
-
225
- emit LogBundleServiceBundleClosed(bundleNftId);
226
315
  }
227
316
 
228
317
 
229
- function increaseBalance(IInstance instance,
318
+ function increaseBalance(
319
+ IInstance instance,
230
320
  NftId bundleNftId,
231
- uint256 amount
321
+ Amount premiumAmount
232
322
  )
233
323
  external
234
324
  onlyService
@@ -236,15 +326,16 @@ contract BundleService is
236
326
  InstanceReader instanceReader = instance.getInstanceReader();
237
327
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
238
328
 
239
- bundleInfo.balanceAmount += amount;
329
+ // update capital and fees when premiums are involved
330
+ _updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
240
331
 
241
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
332
+ // TODO add logging (?)
242
333
  }
243
334
 
244
- function closePolicy(IInstance instance,
335
+ function releaseCollateral(IInstance instance,
245
336
  NftId policyNftId,
246
337
  NftId bundleNftId,
247
- uint256 collateralAmount
338
+ Amount collateralAmount
248
339
  )
249
340
  external
250
341
  onlyService
@@ -252,24 +343,20 @@ contract BundleService is
252
343
  InstanceReader instanceReader = instance.getInstanceReader();
253
344
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
254
345
 
255
- // lock collateral
256
- bundleInfo.lockedAmount -= collateralAmount;
257
-
258
- instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
259
-
260
- unlinkPolicy(instance, policyNftId);
346
+ // reduce locked amount by released collateral amount
347
+ bundleInfo.lockedAmount = bundleInfo.lockedAmount - collateralAmount;
348
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
261
349
  }
262
350
 
263
351
  /// @dev links policy to bundle
264
- function linkPolicy(IInstance instance, NftId policyNftId)
352
+ function _linkPolicy(IInstance instance, NftId policyNftId)
265
353
  internal
266
- onlyService
267
354
  {
268
355
  InstanceReader instanceReader = instance.getInstanceReader();
269
356
  IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
270
357
 
271
- // ensure policy has not yet been activated
272
- if (policyInfo.activatedAt.gtz()) {
358
+ // ensure policy has not yet been activated in a previous tx already
359
+ if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
273
360
  revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
274
361
  }
275
362
 
@@ -277,60 +364,19 @@ contract BundleService is
277
364
  bundleManager.linkPolicy(policyNftId);
278
365
  }
279
366
 
280
- /// @dev unlinks policy from bundle
281
- function unlinkPolicy(IInstance instance, NftId policyNftId)
282
- internal
283
- onlyService
367
+ /// @dev unlinks policy from bundle
368
+ function unlinkPolicy(
369
+ IInstance instance,
370
+ NftId policyNftId
371
+ )
372
+ external
373
+ virtual
284
374
  {
285
- InstanceReader instanceReader = instance.getInstanceReader();
286
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
287
-
288
- // ensure policy has no open claims
289
- if (policyInfo.openClaimsCount > 0) {
290
- revert BundleManager.ErrorBundleManagerPolicyWithOpenClaims(
291
- policyNftId,
292
- policyInfo.openClaimsCount);
293
- }
294
-
295
375
  // ensure policy is closeable
296
- if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
297
- && policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
298
- {
299
- revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
376
+ if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
377
+ revert ErrorBundleServicePolicyNotCloseable(policyNftId);
300
378
  }
301
-
302
- BundleManager bundleManager = instance.getBundleManager();
303
- bundleManager.unlinkPolicy(policyNftId);
304
- }
305
379
 
306
- function _processStakingByTreasury(
307
- InstanceReader instanceReader,
308
- NftId poolNftId,
309
- NftId bundleNftId,
310
- uint256 stakingAmount
311
- )
312
- internal
313
- {
314
- // process token transfer(s)
315
- if(stakingAmount > 0) {
316
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
317
- IComponents.PoolInfo memory poolInfo = abi.decode(
318
- componentInfo.data, (IComponents.PoolInfo));
319
-
320
- TokenHandler tokenHandler = componentInfo.tokenHandler;
321
- address bundleOwner = getRegistry().ownerOf(bundleNftId);
322
- Fee memory stakingFee = poolInfo.stakingFee;
323
-
324
- tokenHandler.transfer(
325
- bundleOwner,
326
- componentInfo.wallet,
327
- stakingAmount
328
- );
329
-
330
- if (! FeeLib.feeIsZero(stakingFee)) {
331
- (uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
332
- // TODO: track staking fees in pool's state (issue #177)
333
- }
334
- }
380
+ instance.getBundleManager().unlinkPolicy(policyNftId);
335
381
  }
336
382
  }