@etherisc/gif-next 0.0.2-93de5de-423 → 0.0.2-94237b7-984

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