@etherisc/gif-next 0.0.2-ce87da3-250 → 0.0.2-ceb30b2-601

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