@etherisc/gif-next 0.0.2-9b434da-265 → 0.0.2-9c44ae6-473

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 +151 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +327 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +618 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +39 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +249 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +157 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +4 -0
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +787 -0
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +4 -0
  17. package/artifacts/contracts/components/Product.sol/Product.json +729 -0
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +1 -1
  45. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +1 -1
  46. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +15 -2
  47. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  48. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +799 -0
  49. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  50. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  51. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +1 -1
  52. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1698 -0
  54. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  55. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +485 -0
  56. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/Instance.sol/Instance.json +587 -499
  58. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +34 -34
  60. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
  62. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +867 -14
  64. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +512 -0
  66. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  67. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +272 -0
  68. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +540 -0
  70. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  72. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -77
  74. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +10 -244
  77. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  79. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  86. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +827 -0
  88. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +716 -0
  90. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
  92. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +466 -0
  94. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +446 -0
  96. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +702 -0
  98. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +760 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1004 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +460 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +1147 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +488 -0
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +197 -116
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +217 -15
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +167 -172
  117. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +324 -44
  119. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +77 -36
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  123. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  124. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  125. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  126. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +1 -1
  130. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.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 +6 -6
  137. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  138. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
  139. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +2 -2
  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 +4 -4
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +6 -6
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +111 -5
  152. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestService.sol/TestService.json +17 -17
  154. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  160. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  161. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  162. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  163. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  168. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  169. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  171. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  172. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  178. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  180. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  182. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  183. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  185. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  187. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  189. package/contracts/components/BaseComponent.sol +91 -0
  190. package/contracts/components/Distribution.sol +163 -0
  191. package/contracts/components/IBaseComponent.sol +8 -2
  192. package/contracts/components/IDistributionComponent.sol +44 -0
  193. package/contracts/components/IPoolComponent.sol +62 -0
  194. package/contracts/components/IProductComponent.sol +35 -0
  195. package/contracts/components/Pool.sol +247 -0
  196. package/contracts/components/Product.sol +289 -0
  197. package/contracts/experiment/cloning/Cloner.sol +47 -0
  198. package/contracts/instance/AccessManagedSimple.sol +9 -8
  199. package/contracts/instance/AccessManagerSimple.sol +12 -2
  200. package/contracts/instance/BundleManager.sol +154 -0
  201. package/contracts/instance/Cloneable.sol +46 -0
  202. package/contracts/instance/IAccessManagerSimple.sol +1 -1
  203. package/contracts/instance/IInstance.sol +56 -0
  204. package/contracts/instance/IInstanceService.sol +32 -0
  205. package/contracts/instance/Instance.sol +79 -15
  206. package/contracts/instance/InstanceAccessManager.sol +3 -3
  207. package/contracts/instance/InstanceReader.sol +315 -0
  208. package/contracts/instance/InstanceService.sol +205 -18
  209. package/contracts/instance/InstanceServiceManager.sol +57 -0
  210. package/contracts/instance/ObjectManager.sol +95 -0
  211. package/contracts/instance/base/ComponentServiceBase.sol +134 -0
  212. package/contracts/instance/base/IInstanceBase.sol +23 -0
  213. package/contracts/instance/base/IKeyValueStore.sol +5 -4
  214. package/contracts/instance/base/KeyValueStore.sol +4 -20
  215. package/contracts/instance/module/IAccess.sol +2 -2
  216. package/contracts/instance/module/IBundle.sol +1 -0
  217. package/contracts/instance/module/ISetup.sol +6 -1
  218. package/contracts/instance/module/ITreasury.sol +1 -1
  219. package/contracts/instance/service/ComponentOwnerService.sol +317 -0
  220. package/contracts/instance/service/DistributionService.sol +88 -0
  221. package/contracts/instance/service/DistributionServiceManager.sol +54 -0
  222. package/contracts/instance/service/IComponentOwnerService.sol +20 -0
  223. package/contracts/instance/service/IDistributionService.sol +12 -0
  224. package/contracts/instance/service/IPoolService.sol +51 -0
  225. package/contracts/instance/service/IProductService.sol +110 -0
  226. package/contracts/instance/service/PoolService.sol +228 -0
  227. package/contracts/instance/service/PoolServiceManager.sol +54 -0
  228. package/contracts/instance/service/ProductService.sol +570 -0
  229. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  230. package/contracts/registry/ChainNft.sol +40 -25
  231. package/contracts/registry/IRegistry.sol +30 -22
  232. package/contracts/registry/IRegistryService.sol +36 -15
  233. package/contracts/registry/Registry.sol +133 -176
  234. package/contracts/registry/RegistryService.sol +159 -170
  235. package/contracts/registry/RegistryServiceManager.sol +39 -2
  236. package/contracts/registry/TokenRegistry.sol +111 -0
  237. package/contracts/shared/ERC165.sol +7 -3
  238. package/contracts/shared/IRegisterable.sol +1 -1
  239. package/contracts/{instance/base → shared}/IService.sol +3 -3
  240. package/contracts/shared/NftOwnable.sol +2 -4
  241. package/contracts/shared/ProxyManager.sol +3 -3
  242. package/contracts/shared/Registerable.sol +3 -2
  243. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  244. package/contracts/shared/Service.sol +55 -0
  245. package/contracts/shared/TokenHandler.sol +2 -2
  246. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  247. package/contracts/shared/Versionable.sol +1 -1
  248. package/contracts/test/TestFee.sol +2 -2
  249. package/contracts/test/TestRoleId.sol +6 -6
  250. package/contracts/test/TestService.sol +3 -5
  251. package/contracts/types/Fee.sol +3 -3
  252. package/contracts/types/NftIdSet.sol +26 -24
  253. package/contracts/types/RoleId.sol +19 -4
  254. package/contracts/types/StateId.sol +4 -0
  255. package/contracts/types/UFixed.sol +128 -12
  256. package/contracts/types/Version.sol +4 -1
  257. package/package.json +4 -3
  258. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  259. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  260. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  261. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  262. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  263. package/contracts/instance/base/ServiceBase.sol +0 -44
  264. package/contracts/registry/IChainNft.sol +0 -22
@@ -0,0 +1,110 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRisk} from "../module/IRisk.sol";
5
+ import {IService} from "../../shared/IService.sol";
6
+
7
+ import {NftId} from "../../types/NftId.sol";
8
+ import {ReferralId} from "../../types/Referral.sol";
9
+ import {RiskId} from "../../types/RiskId.sol";
10
+ import {StateId} from "../../types/StateId.sol";
11
+ import {Timestamp} from "../../types/Timestamp.sol";
12
+ import {UFixed} from "../../types/UFixed.sol";
13
+ import {Fee} from "../../types/Fee.sol";
14
+
15
+ interface IProductService is IService {
16
+
17
+ error ErrorIProductServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
18
+
19
+ function setFees(
20
+ Fee memory productFee,
21
+ Fee memory processingFee
22
+ ) external;
23
+
24
+ function createRisk(
25
+ RiskId riskId,
26
+ bytes memory data
27
+ ) external;
28
+
29
+
30
+ function updateRisk(
31
+ RiskId riskId,
32
+ bytes memory data
33
+ ) external;
34
+
35
+
36
+ function updateRiskState(
37
+ RiskId riskId,
38
+ StateId newState
39
+ ) external;
40
+
41
+
42
+ function calculatePremium(
43
+ RiskId riskId,
44
+ uint256 sumInsuredAmount,
45
+ uint256 lifetime,
46
+ bytes memory applicationData,
47
+ NftId bundleNftId,
48
+ ReferralId referralId
49
+ )
50
+ external
51
+ view
52
+ returns (
53
+ uint256 premiumAmount,
54
+ uint256 productFeeAmount,
55
+ uint256 poolFeeAmount,
56
+ uint256 bundleFeeAmount,
57
+ uint256 distributionFeeAmount
58
+ );
59
+
60
+
61
+ function createApplication(
62
+ address applicationOwner,
63
+ RiskId riskId,
64
+ uint256 sumInsuredAmount,
65
+ uint256 lifetime,
66
+ bytes memory applicationData,
67
+ NftId bundleNftId,
68
+ ReferralId referralId
69
+ ) external returns (NftId nftId);
70
+
71
+ /**
72
+ * @dev revokes the application represented by {policyNftId}.
73
+ * an application can only be revoked in applied state.
74
+ * only the application holder may revoke an application.
75
+ */
76
+ function revoke(NftId policyNftId) external;
77
+
78
+ /**
79
+ * @dev underwrites the policy represented by {policyNftId}.
80
+ * optionally collects premiums and activates the policy.
81
+ * - premium payment is only attempted if requirePremiumPayment is set to true
82
+ * - activation is only done if activateAt is a non-zero timestamp
83
+ */
84
+ function underwrite(
85
+ NftId policyNftId,
86
+ bool requirePremiumPayment,
87
+ Timestamp activateAt
88
+ ) external;
89
+
90
+ // function decline(uint256 nftId) external;
91
+ // function expire(uint256 nftId) external;
92
+
93
+ function collectPremium(NftId policyNftId, Timestamp activateAt) external;
94
+
95
+ function activate(NftId policyNftId, Timestamp activateAt) external;
96
+
97
+
98
+ function close(NftId nftId) external;
99
+
100
+ // function createClaim(uint256 nftId, uint256 claimAmount) external;
101
+ // function confirmClaim(uint256 nftId, uint256 claimId, uint256 claimAmount) external;
102
+ // function declineClaim(uint256 nftId, uint256 claimId) external;
103
+ // function closeClaim(uint256 nftId, uint256 claimId) external;
104
+
105
+ function calculateRequiredCollateral(
106
+ UFixed collateralizationLevel,
107
+ uint256 sumInsuredAmount
108
+ ) external pure returns(uint256 collateralAmount);
109
+
110
+ }
@@ -0,0 +1,228 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Pool} from "../../components/Pool.sol";
5
+ import {IRegistry} from "../../registry/IRegistry.sol";
6
+ import {IInstance} from "../../instance/IInstance.sol";
7
+ import {IBundle} from "../../instance/module/IBundle.sol";
8
+ import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
+ import {ISetup} from "../module/ISetup.sol";
10
+
11
+ import {IVersionable} from "../../shared/IVersionable.sol";
12
+ import {Versionable} from "../../shared/Versionable.sol";
13
+ import {INftOwnable} from "../../shared/INftOwnable.sol";
14
+
15
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
16
+ import {POOL, BUNDLE} from "../../types/ObjectType.sol";
17
+ import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
18
+ import {Fee, FeeLib} from "../../types/Fee.sol";
19
+ import {Version, VersionLib} from "../../types/Version.sol";
20
+ import {KEEP_STATE, StateId} from "../../types/StateId.sol";
21
+ import {zeroTimestamp} from "../../types/Timestamp.sol";
22
+
23
+ import {IService} from "../../shared/IService.sol";
24
+ import {Service} from "../../shared/Service.sol";
25
+ import {BundleManager} from "../BundleManager.sol";
26
+ import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
27
+ import {IPoolService} from "./IPoolService.sol";
28
+ import {IRegistryService} from "../../registry/IRegistryService.sol";
29
+ import {InstanceService} from "../InstanceService.sol";
30
+ import {InstanceReader} from "../InstanceReader.sol";
31
+
32
+ string constant POOL_SERVICE_NAME = "PoolService";
33
+
34
+ contract PoolService is
35
+ ComponentServiceBase,
36
+ IPoolService
37
+ {
38
+ using NftIdLib for NftId;
39
+
40
+ string public constant NAME = "PoolService";
41
+
42
+ address internal _registryAddress;
43
+
44
+ function _initialize(
45
+ address owner,
46
+ bytes memory data
47
+ )
48
+ internal
49
+ initializer
50
+ virtual override
51
+ {
52
+ address initialOwner = address(0);
53
+ (_registryAddress, initialOwner) = abi.decode(data, (address, address));
54
+ // TODO while PoolService is not deployed in PoolServiceManager constructor
55
+ // owner is PoolServiceManager deployer
56
+ _initializeService(_registryAddress, owner);
57
+
58
+ _registerInterface(type(IService).interfaceId);
59
+ _registerInterface(type(IPoolService).interfaceId);
60
+ }
61
+
62
+ function getName() public pure override(Service, IService) returns(string memory name) {
63
+ return NAME;
64
+ }
65
+
66
+ function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal override {
67
+ ISetup.PoolSetupInfo memory initialSetup = abi.decode(
68
+ initialObjData,
69
+ (ISetup.PoolSetupInfo)
70
+ );
71
+ instance.createPoolSetup(componentNftId, initialSetup);
72
+ }
73
+
74
+ function setFees(
75
+ Fee memory poolFee,
76
+ Fee memory stakingFee,
77
+ Fee memory performanceFee
78
+ )
79
+ external
80
+ override
81
+ {
82
+ (IRegistry.ObjectInfo memory poolInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
83
+ InstanceReader instanceReader = instance.getInstanceReader();
84
+ NftId poolNftId = poolInfo.nftId;
85
+
86
+ ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
87
+ poolSetupInfo.poolFee = poolFee;
88
+ poolSetupInfo.stakingFee = stakingFee;
89
+ poolSetupInfo.performanceFee = performanceFee;
90
+
91
+ instance.updatePoolSetup(poolNftId, poolSetupInfo, KEEP_STATE());
92
+ }
93
+
94
+ function createBundle(
95
+ address owner,
96
+ Fee memory fee,
97
+ uint256 stakingAmount,
98
+ uint256 lifetime,
99
+ bytes calldata filter
100
+ )
101
+ external
102
+ override
103
+ returns(NftId bundleNftId)
104
+ {
105
+ (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
106
+ InstanceReader instanceReader = instance.getInstanceReader();
107
+ NftId poolNftId = info.nftId;
108
+
109
+ IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
110
+ poolNftId,
111
+ fee,
112
+ filter,
113
+ stakingAmount,
114
+ 0,
115
+ stakingAmount,
116
+ lifetime,
117
+ zeroTimestamp(),
118
+ zeroTimestamp()
119
+ );
120
+
121
+ // register bundle with registry
122
+ bundleNftId = getRegistryService().registerBundle(
123
+ IRegistry.ObjectInfo(
124
+ zeroNftId(),
125
+ poolNftId,
126
+ BUNDLE(),
127
+ false, // intercepting property for bundles is defined on pool
128
+ address(0),
129
+ owner,
130
+ abi.encode(bundleInfo)
131
+ )
132
+ );
133
+
134
+ // create bundle info in instance
135
+ instance.createBundle(bundleNftId, bundleInfo);
136
+
137
+ BundleManager bundleManager = instance.getBundleManager();
138
+ bundleManager.add(bundleNftId);
139
+
140
+ _processStakingByTreasury(
141
+ instanceReader,
142
+ poolNftId,
143
+ bundleNftId,
144
+ stakingAmount);
145
+
146
+ // TODO add logging
147
+ }
148
+
149
+ function setBundleFee(
150
+ NftId bundleNftId,
151
+ Fee memory fee
152
+ )
153
+ external
154
+ override
155
+ {
156
+ (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
157
+ InstanceReader instanceReader = instance.getInstanceReader();
158
+ NftId poolNftId = info.nftId;
159
+
160
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
161
+ require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
162
+ require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
163
+
164
+ bundleInfo.fee = fee;
165
+
166
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
167
+ }
168
+
169
+ function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
170
+ external
171
+ onlyService
172
+ {
173
+ IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
174
+ IInstance instance = IInstance(instanceInfo.objectAddress);
175
+ instance.updateBundle(bundleNftId, bundleInfo, state);
176
+ }
177
+
178
+ function underwritePolicy(IInstance instance,
179
+ NftId policyNftId,
180
+ NftId bundleNftId,
181
+ uint256 collateralAmount,
182
+ uint256 netPremiumAmount
183
+ )
184
+ external
185
+ onlyService
186
+ {
187
+ InstanceReader instanceReader = instance.getInstanceReader();
188
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
189
+
190
+ // lock collateral
191
+ bundleInfo.lockedAmount += collateralAmount;
192
+ bundleInfo.balanceAmount += netPremiumAmount;
193
+
194
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
195
+
196
+ BundleManager bundleManager = instance.getBundleManager();
197
+ bundleManager.linkPolicy(policyNftId);
198
+ }
199
+
200
+ function _processStakingByTreasury(
201
+ InstanceReader instanceReader,
202
+ NftId poolNftId,
203
+ NftId bundleNftId,
204
+ uint256 stakingAmount
205
+ )
206
+ internal
207
+ {
208
+ // process token transfer(s)
209
+ if(stakingAmount > 0) {
210
+ ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
211
+ TokenHandler tokenHandler = poolInfo.tokenHandler;
212
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
213
+ Fee memory stakingFee = poolInfo.stakingFee;
214
+
215
+ tokenHandler.transfer(
216
+ bundleOwner,
217
+ poolInfo.wallet,
218
+ stakingAmount
219
+ );
220
+
221
+
222
+ if (! FeeLib.feeIsZero(stakingFee)) {
223
+ (uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
224
+ // TODO: track staking fees in pool's state (issue #177)
225
+ }
226
+ }
227
+ }
228
+ }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {PoolService} from "./PoolService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {VersionLib} from "../../types/Version.sol";
10
+
11
+ contract PoolServiceManager is ProxyManager {
12
+
13
+ PoolService private _poolService;
14
+
15
+ /// @dev initializes proxy manager with pool service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager()
20
+ {
21
+ PoolService poolSrv = new PoolService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(poolSrv),
25
+ data);
26
+
27
+ _poolService = PoolService(address(versionable));
28
+
29
+ Registry registry = Registry(registryAddress);
30
+ address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ RegistryService registryService = RegistryService(registryServiceAddress);
32
+ // TODO this must have a role or own nft to register service
33
+ //registryService.registerService(_poolService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_poolService));
40
+
41
+ // implies that after this constructor call only upgrade functionality is available
42
+ _isDeployed = true;
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getPoolService()
47
+ external
48
+ view
49
+ returns (PoolService poolService)
50
+ {
51
+ return _poolService;
52
+ }
53
+
54
+ }