@etherisc/gif-next 0.0.2-78bf628-134 → 0.0.2-7acbd99-227

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 (268) hide show
  1. package/README.md +71 -25
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +80 -41
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +445 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +43 -40
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +343 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +199 -81
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +141 -47
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +299 -84
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +250 -53
  18. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  30. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  36. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  37. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +742 -425
  38. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
  39. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  40. package/artifacts/contracts/instance/Instance.sol/Instance.json +1014 -604
  41. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +139 -46
  43. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +33 -1
  45. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/IService.sol/IService.json +99 -55
  49. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +160 -48
  51. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +14 -14
  53. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
  55. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +135 -55
  58. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +1 -1
  60. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +55 -54
  63. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +56 -55
  66. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +12 -7
  68. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +12 -7
  71. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
  72. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
  73. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
  74. package/artifacts/contracts/instance/module/{compensation/ICompensation.sol/ICompensation.json → distribution/IDistribution.sol/IDistribution.json} +2 -2
  75. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
  76. package/artifacts/contracts/instance/module/{compensation/ICompensation.sol/ICompensationModule.json → distribution/IDistribution.sol/IDistributionModule.json} +2 -2
  77. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +53 -40
  80. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +53 -40
  82. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +29 -14
  85. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +28 -13
  87. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +104 -1
  90. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +126 -5
  92. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +326 -221
  95. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
  97. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +326 -221
  99. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +251 -84
  101. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +526 -0
  103. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +99 -74
  105. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +369 -0
  107. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  108. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +158 -50
  109. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  110. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +246 -49
  111. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  112. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +230 -52
  113. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  114. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +361 -70
  115. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +141 -12
  117. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  118. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +5 -0
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +293 -40
  121. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  122. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +668 -0
  124. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  126. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/Registry.sol/Registry.json +471 -121
  128. package/artifacts/contracts/registry/Registry.sol/RegistryCreationCode.dbg.json +4 -0
  129. package/artifacts/contracts/registry/Registry.sol/RegistryCreationCode.json +150 -0
  130. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.json +344 -0
  132. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  133. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +861 -0
  134. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  135. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  136. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +43 -40
  139. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
  141. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  142. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -0
  143. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +76 -37
  145. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  146. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  147. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
  149. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
  150. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +445 -0
  151. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  153. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestPool.sol/TestPool.json +299 -84
  155. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +297 -58
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +93 -39
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  161. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestService.sol/TestService.json +161 -68
  163. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  166. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +89 -25
  168. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  169. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  170. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/Fee.sol/FeeLib.json +50 -11
  174. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  176. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  178. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  180. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  182. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
  184. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  186. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  188. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  193. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  195. package/contracts/components/BaseComponent.sol +12 -21
  196. package/contracts/components/Distribution.sol +155 -0
  197. package/contracts/components/IBaseComponent.sol +2 -2
  198. package/contracts/components/IDistributionComponent.sol +47 -0
  199. package/contracts/components/IPoolComponent.sol +14 -6
  200. package/contracts/components/IProductComponent.sol +26 -6
  201. package/contracts/components/Pool.sol +99 -27
  202. package/contracts/components/Product.sol +204 -22
  203. package/contracts/instance/IInstance.sol +11 -7
  204. package/contracts/instance/Instance.sol +25 -7
  205. package/contracts/instance/base/ComponentServiceBase.sol +13 -6
  206. package/contracts/instance/base/IInstanceBase.sol +6 -2
  207. package/contracts/instance/base/InstanceBase.sol +13 -8
  208. package/contracts/instance/base/Lifecycle.sol +10 -2
  209. package/contracts/instance/base/ModuleBase.sol +22 -17
  210. package/contracts/instance/base/ServiceBase.sol +19 -13
  211. package/contracts/instance/module/access/Access.sol +3 -3
  212. package/contracts/instance/module/bundle/BundleModule.sol +10 -12
  213. package/contracts/instance/module/bundle/IBundle.sol +6 -11
  214. package/contracts/instance/module/component/ComponentModule.sol +20 -24
  215. package/contracts/instance/module/component/IComponent.sol +5 -4
  216. package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
  217. package/contracts/instance/module/distribution/IDistribution.sol +10 -0
  218. package/contracts/instance/module/policy/IPolicy.sol +10 -8
  219. package/contracts/instance/module/policy/PolicyModule.sol +33 -19
  220. package/contracts/instance/module/pool/IPoolModule.sol +4 -4
  221. package/contracts/instance/module/pool/PoolModule.sol +23 -15
  222. package/contracts/instance/module/risk/IRisk.sol +18 -2
  223. package/contracts/instance/module/risk/RiskModule.sol +56 -2
  224. package/contracts/instance/module/treasury/ITreasury.sol +32 -51
  225. package/contracts/instance/module/treasury/TokenHandler.sol +2 -2
  226. package/contracts/instance/module/treasury/TreasuryModule.sol +68 -89
  227. package/contracts/instance/service/ComponentOwnerService.sol +189 -79
  228. package/contracts/instance/service/DistributionService.sol +54 -0
  229. package/contracts/instance/service/IComponentOwnerService.sol +0 -2
  230. package/contracts/instance/service/IDistributionService.sol +12 -0
  231. package/contracts/instance/service/IPoolService.sol +7 -0
  232. package/contracts/instance/service/IProductService.sol +56 -7
  233. package/contracts/instance/service/PoolService.sol +49 -23
  234. package/contracts/instance/service/ProductService.sol +246 -91
  235. package/contracts/registry/ChainNft.sol +43 -15
  236. package/contracts/registry/IChainNft.sol +3 -2
  237. package/contracts/registry/IRegistry.sol +44 -28
  238. package/contracts/registry/IRegistryService.sol +29 -0
  239. package/contracts/registry/ITransferInterceptor.sol +6 -0
  240. package/contracts/registry/Registry.sol +388 -271
  241. package/contracts/registry/RegistryInstaller.sol +100 -0
  242. package/contracts/registry/RegistryService.sol +383 -0
  243. package/contracts/shared/ERC165.sol +1 -1
  244. package/contracts/shared/IRegisterable.sol +7 -9
  245. package/contracts/shared/IVersionable.sol +55 -11
  246. package/contracts/shared/ProxyManager.sol +115 -0
  247. package/contracts/shared/Registerable.sol +74 -43
  248. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  249. package/contracts/shared/Versionable.sol +112 -54
  250. package/contracts/test/TestDistribution.sol +22 -0
  251. package/contracts/test/TestPool.sol +7 -2
  252. package/contracts/test/TestProduct.sol +37 -7
  253. package/contracts/test/TestRegisterable.sol +5 -6
  254. package/contracts/test/TestService.sol +5 -11
  255. package/contracts/types/Fee.sol +8 -3
  256. package/contracts/types/ObjectType.sol +17 -5
  257. package/contracts/types/ReferralId.sol +48 -0
  258. package/contracts/types/RiskId.sol +43 -0
  259. package/contracts/types/RoleId.sol +2 -2
  260. package/contracts/types/Version.sol +9 -0
  261. package/package.json +1 -1
  262. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  263. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  264. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  265. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  266. package/contracts/experiment/statemachine/README.md +0 -112
  267. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  268. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
@@ -6,10 +6,10 @@ import {NftId} from "../../../types/NftId.sol";
6
6
  import {UFixed} from "../../../types/UFixed.sol";
7
7
  import {IProductService} from "../../service/IProductService.sol";
8
8
  import {IPoolService} from "../../service/IPoolService.sol";
9
+ import {IComponentOwnerService} from "../../service/IComponentOwnerService.sol";
9
10
 
10
11
  interface IPool {
11
12
  struct PoolInfo {
12
- NftId nftId;
13
13
  bool isVerifying;
14
14
  UFixed collateralizationLevel;
15
15
  }
@@ -18,9 +18,8 @@ interface IPool {
18
18
  interface IPoolModule is IPool {
19
19
 
20
20
  function registerPool(
21
- NftId poolNftId,
22
- bool isVerifying,
23
- UFixed collateralizationLevel
21
+ NftId nftId,
22
+ PoolInfo memory info
24
23
  ) external;
25
24
 
26
25
  function addBundleToPool(
@@ -37,5 +36,6 @@ interface IPoolModule is IPool {
37
36
  function getBundleNftId(NftId poolNftId, uint256 index) external view returns (NftId bundleNftId);
38
37
 
39
38
  // repeat service linked signatures to avoid linearization issues
39
+ function getComponentOwnerService() external view returns(IComponentOwnerService);
40
40
  function getPoolService() external returns(IPoolService);
41
41
  }
@@ -8,20 +8,34 @@ import {IPolicy, IPolicyModule} from "../../module/policy/IPolicy.sol";
8
8
  import {ITreasuryModule} from "../../module/treasury/ITreasury.sol";
9
9
 
10
10
  import {NftId} from "../../../types/NftId.sol";
11
+ import {POOL} from "../../../types/ObjectType.sol";
11
12
  import {LibNftIdSet} from "../../../types/NftIdSet.sol";
12
13
  import {StateId, APPLIED} from "../../../types/StateId.sol";
13
14
  import {UFixed} from "../../../types/UFixed.sol";
14
15
 
16
+ import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
15
17
  import {IPoolModule} from "./IPoolModule.sol";
18
+ import {ModuleBase} from "../../base/ModuleBase.sol";
16
19
 
17
20
  abstract contract PoolModule is
21
+ ModuleBase,
18
22
  IPoolModule
19
23
  {
20
24
  using LibNftIdSet for LibNftIdSet.Set;
21
25
 
22
- mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
26
+ // mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
23
27
  mapping(NftId poolNftId => LibNftIdSet.Set bundles) private _bundlesForPool;
24
28
 
29
+
30
+ // TODO try to keep 1 modifier in 1 place...
31
+ modifier onlyComponentOwnerService() virtual {
32
+ require(
33
+ msg.sender == address(this.getComponentOwnerService()),
34
+ "ERROR:CMP-001:NOT_COMPONENT_OWNER_SERVICE"
35
+ );
36
+ _;
37
+ }
38
+
25
39
  modifier poolServiceCallingPool() {
26
40
  require(
27
41
  msg.sender == address(this.getPoolService()),
@@ -30,25 +44,19 @@ abstract contract PoolModule is
30
44
  _;
31
45
  }
32
46
 
47
+ function initializePoolModule(IKeyValueStore keyValueStore) internal {
48
+ _initialize(keyValueStore);
49
+ }
50
+
33
51
  function registerPool(
34
52
  NftId nftId,
35
- bool isVerifying,
36
- UFixed collateralizationRate
53
+ PoolInfo memory info
37
54
  )
38
55
  public
56
+ onlyComponentOwnerService
39
57
  override
40
58
  {
41
- require(
42
- _poolInfo[nftId].nftId.eqz(),
43
- "ERROR:PL-010:ALREADY_CREATED");
44
-
45
- _poolInfo[nftId] = PoolInfo(
46
- nftId,
47
- isVerifying,
48
- collateralizationRate
49
- );
50
-
51
- // TODO add logging
59
+ _create(POOL(), nftId, abi.encode(info));
52
60
  }
53
61
 
54
62
  function addBundleToPool(
@@ -71,7 +79,7 @@ abstract contract PoolModule is
71
79
  function getPoolInfo(
72
80
  NftId nftId
73
81
  ) external view override returns (PoolInfo memory info) {
74
- info = _poolInfo[nftId];
82
+ return abi.decode(_getData(POOL(), nftId), (PoolInfo));
75
83
  }
76
84
 
77
85
 
@@ -1,10 +1,26 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- interface IRisk {
4
+ import {NftId} from "../../../types/NftId.sol";
5
+ import {RiskId} from "../../../types/RiskId.sol";
6
+ import {StateId} from "../../../types/StateId.sol";
5
7
 
8
+ interface IRisk {
9
+ struct RiskInfo {
10
+ NftId productNftId;
11
+ bytes data;
12
+ }
6
13
  }
7
14
 
8
15
  interface IRiskModule is IRisk {
9
-
16
+ function createRisk(
17
+ RiskId riskId,
18
+ NftId productNftId,
19
+ bytes memory data
20
+ ) external;
21
+
22
+ function setRiskInfo(RiskId riskId, RiskInfo memory info) external;
23
+ function updateRiskState(RiskId riskId, StateId state) external;
24
+
25
+ function getRiskInfo(RiskId riskId) external view returns (RiskInfo memory info);
10
26
  }
@@ -1,8 +1,62 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
+ import {NftId} from "../../../types/NftId.sol";
5
+ import {RISK} from "../../../types/ObjectType.sol";
6
+ import {RiskId} from "../../../types/RiskId.sol";
7
+ import {StateId} from "../../../types/StateId.sol";
8
+
9
+ import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
4
10
  import {IRiskModule} from "./IRisk.sol";
11
+ import {ModuleBase} from "../../base/ModuleBase.sol";
12
+
13
+ contract RiskModule is
14
+ ModuleBase,
15
+ IRiskModule
16
+ {
17
+ function initializeRiskModule(IKeyValueStore keyValueStore) internal {
18
+ _initialize(keyValueStore);
19
+ }
20
+
21
+ function createRisk(
22
+ RiskId riskId,
23
+ NftId productNftId,
24
+ bytes memory data
25
+ ) external override {
26
+ RiskInfo memory info = RiskInfo(
27
+ productNftId,
28
+ data
29
+ );
30
+
31
+ _create(RISK(), riskId.toKey32(), abi.encode(info));
32
+ }
33
+
34
+ function setRiskInfo(
35
+ RiskId riskId,
36
+ RiskInfo memory info
37
+ )
38
+ external
39
+ override
40
+ {
41
+
42
+ }
43
+
44
+ function updateRiskState(
45
+ RiskId riskId,
46
+ StateId state
47
+ )
48
+ external
49
+ override
50
+ {
51
+
52
+ }
53
+
54
+ function getRiskInfo(RiskId riskId)
55
+ external
56
+ view
57
+ override
58
+ returns (RiskInfo memory info)
59
+ {
5
60
 
6
- contract RiskModule is IRiskModule {
7
-
61
+ }
8
62
  }
@@ -1,7 +1,11 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
4
+ import {IERC20Metadata} from "@openzeppelin5/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+ import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
6
+ import {IPoolComponent} from "../../../components/IPoolComponent.sol";
7
+ import {IProductComponent} from "../../../components/IProductComponent.sol";
8
+ import {IComponentOwnerService} from "../../service/IComponentOwnerService.sol";
5
9
 
6
10
  import {NftId} from "../../../types/NftId.sol";
7
11
  import {UFixed} from "../../../types/UFixed.sol";
@@ -13,73 +17,48 @@ interface ITreasury {
13
17
  // TODO add events
14
18
  // TODO add errors
15
19
 
16
- struct ProductSetup {
17
- NftId productNftId;
18
- NftId distributorNftId;
20
+ // treasury info is linked to product nft id
21
+ struct TreasuryInfo {
19
22
  NftId poolNftId;
23
+ NftId distributionNftId;
20
24
  IERC20Metadata token;
21
- address wallet;
22
- Fee policyFee;
23
- Fee processingFee;
24
- }
25
-
26
- struct DistributorSetup {
27
- NftId distributorNftId;
28
- address wallet;
29
- Fee commissionFee;
30
- }
31
-
32
- struct PoolSetup {
33
- NftId poolNftId;
34
- address wallet;
35
- Fee stakingFee;
36
- Fee performanceFee;
25
+ Fee productFee; // product fee on net premium
26
+ Fee processingFee; // product fee on payout amounts
27
+ Fee poolFee; // pool fee on net premium
28
+ Fee stakingFee; // pool fee on staked capital from investor
29
+ Fee performanceFee; // pool fee on profits from capital investors
30
+ Fee distributionFee; // default distribution fee (no referral id)
37
31
  }
38
32
  }
39
33
 
40
34
  interface ITreasuryModule is ITreasury {
41
35
 
42
- function registerProduct(
36
+ function registerProductSetup(
43
37
  NftId productNftId,
44
- NftId distributorNftId,
45
- NftId poolNftId,
46
- IERC20Metadata token,
47
- address wallet,
48
- Fee memory policyFee,
49
- Fee memory processingFee
38
+ TreasuryInfo memory info
50
39
  ) external;
51
40
 
52
- function setProductFees(
41
+ function setTreasuryInfo(
53
42
  NftId productNftId,
54
- Fee memory policyFee,
55
- Fee memory processingFee
43
+ TreasuryInfo memory info
56
44
  ) external;
57
45
 
58
- function registerPool(
59
- NftId poolNftId,
60
- address wallet,
61
- Fee memory stakingFee,
62
- Fee memory performanceFee
63
- ) external;
46
+ function hasTreasuryInfo(
47
+ NftId productNftId
48
+ ) external view returns (bool hasInfo);
64
49
 
65
- function setPoolFees(
66
- NftId poolNftId,
67
- Fee memory stakingFee,
68
- Fee memory performanceFee
69
- ) external;
50
+ function getTreasuryInfo(
51
+ NftId productNftId
52
+ ) external view returns (TreasuryInfo memory info);
53
+
54
+ function getProductNftId(
55
+ NftId componentNftId
56
+ ) external view returns (NftId productNftId);
70
57
 
71
58
  function getTokenHandler(
72
59
  NftId componentNftId
73
60
  ) external view returns (TokenHandler tokenHandler);
74
61
 
75
- function getProductSetup(
76
- NftId productNftId
77
- ) external view returns (ProductSetup memory setup);
78
-
79
- function getPoolSetup(
80
- NftId poolNftId
81
- ) external view returns (PoolSetup memory setup);
82
-
83
62
  function calculateFeeAmount(
84
63
  uint256 amount,
85
64
  Fee memory fee
@@ -90,7 +69,7 @@ interface ITreasuryModule is ITreasury {
90
69
  uint256 fixedFee
91
70
  ) external pure returns (Fee memory fee);
92
71
 
93
- function getZeroFee() external pure returns (Fee memory fee);
72
+ function getZeroFee() external view returns (Fee memory fee);
94
73
 
95
74
  function getUFixed(
96
75
  uint256 a
@@ -100,4 +79,6 @@ interface ITreasuryModule is ITreasury {
100
79
  uint256 a,
101
80
  int8 exp
102
81
  ) external pure returns (UFixed);
82
+
83
+ function getComponentOwnerService() external view returns(IComponentOwnerService);
103
84
  }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
4
+ import {IERC20Metadata} from "@openzeppelin5/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {NftId} from "../../../types/NftId.sol";
7
7
 
@@ -1,103 +1,82 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
4
+ import {IERC20Metadata} from "@openzeppelin5/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+ import {IDistributionComponent} from "../../../components/IDistributionComponent.sol";
6
+ import {IPoolComponent} from "../../../components/IPoolComponent.sol";
7
+ import {IProductComponent} from "../../../components/IProductComponent.sol";
5
8
 
6
9
  import {NftId} from "../../../types/NftId.sol";
10
+ import {TREASURY} from "../../../types/ObjectType.sol";
7
11
  import {Fee, FeeLib} from "../../../types/Fee.sol";
8
12
  import {UFixed, UFixedMathLib} from "../../../types/UFixed.sol";
9
13
  import {TokenHandler} from "./TokenHandler.sol";
14
+ import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
10
15
  import {ITreasuryModule} from "./ITreasury.sol";
11
-
12
- abstract contract TreasuryModule is ITreasuryModule {
13
- mapping(NftId productNftId => ProductSetup setup) private _productSetup;
14
- mapping(NftId distributorNftId => DistributorSetup setup)
15
- private _distributorSetup;
16
- mapping(NftId poolNftId => PoolSetup setup) private _poolSetup;
17
- mapping(NftId componentNftId => TokenHandler tokenHanlder) _tokenHandler;
18
-
19
- function registerProduct(
20
- NftId productNftId,
21
- NftId distributorNftId,
22
- NftId poolNftId,
23
- IERC20Metadata token,
24
- address wallet,
25
- Fee memory policyFee,
26
- Fee memory processingFee
27
- ) external override // TODO add authz (only component module)
28
- {
29
- require(address(_tokenHandler[productNftId]) == address(0), "ERROR:TRS-010:TOKEN_HANDLER_ALREADY_REGISTERED");
30
- require(address(_tokenHandler[poolNftId]) == address(0), "ERROR:TRS-011:TOKEN_HANDLER_ALREADY_REGISTERED");
31
- require(address(_tokenHandler[distributorNftId]) == address(0), "ERROR:TRS-012:TOKEN_HANDLER_ALREADY_REGISTERED");
32
- // TODO add additional validations
33
-
34
- // deploy product specific handler contract
35
- TokenHandler tokenHandler = new TokenHandler(productNftId, address(token));
36
- _tokenHandler[productNftId] = tokenHandler;
37
- _tokenHandler[poolNftId] = tokenHandler;
38
- _tokenHandler[distributorNftId] = tokenHandler;
39
-
40
- // create product setup
41
- _productSetup[productNftId] = ProductSetup(
42
- productNftId,
43
- distributorNftId,
44
- poolNftId,
45
- token,
46
- wallet,
47
- policyFee,
48
- processingFee
16
+ import {ModuleBase} from "../../base/ModuleBase.sol";
17
+
18
+ abstract contract TreasuryModule is
19
+ ModuleBase,
20
+ ITreasuryModule
21
+ {
22
+ // relation of distributor and pool nft map to product nft
23
+ mapping(NftId componentNftId => NftId productNftId) internal _productNft;
24
+ // relation of component nft to token hanlder
25
+ mapping(NftId componentNftId => TokenHandler tokenHandler) internal _tokenHandler;
26
+ Fee internal _zeroFee;
27
+
28
+ modifier onlyComponentOwnerService() virtual {
29
+ require(
30
+ msg.sender == address(this.getComponentOwnerService()),
31
+ "ERROR:CMP-001:NOT_COPONENT_OWNER_SERVICE"
49
32
  );
33
+ _;
34
+ }
50
35
 
51
- // TODO add logging
36
+ function _initializeTreasuryModule(IKeyValueStore keyValueStore) internal {
37
+ //_initializeModuleBase(keyValueStore);
38
+ _initialize(keyValueStore);
39
+ _zeroFee = FeeLib.zeroFee();
52
40
  }
53
41
 
54
- function setProductFees(
42
+ function registerProductSetup(
55
43
  NftId productNftId,
56
- Fee memory policyFee,
57
- Fee memory processingFee
58
- ) external override // TODO add authz (only component owner service)
44
+ TreasuryInfo memory setup
45
+ )
46
+ external
47
+ onlyComponentOwnerService
59
48
  {
60
- // TODO add validation
61
-
62
- ProductSetup storage setup = _productSetup[productNftId];
63
- setup.policyFee = policyFee;
64
- setup.processingFee = processingFee;
65
-
66
- // TODO add logging
67
- }
49
+ NftId poolNftId = setup.poolNftId;
50
+ NftId distributionNftId = setup.distributionNftId;
68
51
 
69
- function registerPool(
70
- NftId poolNftId,
71
- address wallet,
72
- Fee memory stakingFee,
73
- Fee memory performanceFee
74
- ) external override // TODO add authz (only component module)
75
- {
76
- // TODO add validation
52
+ require(address(_tokenHandler[productNftId]) == address(0), "ERROR:TRS-012:TOKEN_HANDLER_ALREADY_REGISTERED");
53
+ require(_productNft[poolNftId].eqz(), "ERROR:TRS-013:POOL_ALREADY_LINKED");
54
+ require(_productNft[distributionNftId].eqz(), "ERROR:TRS-014:COMPENSATION_ALREADY_LINKED");
77
55
 
78
- _poolSetup[poolNftId] = PoolSetup(
79
- poolNftId,
80
- wallet,
81
- stakingFee,
82
- performanceFee
83
- );
56
+ // TODO deploy TokenHandler with separate contract to save space
57
+ // deploy product specific handler contract
58
+ _tokenHandler[productNftId] = new TokenHandler(productNftId, address(setup.token));
59
+ _productNft[distributionNftId] = productNftId;
60
+ _productNft[poolNftId] = productNftId;
84
61
 
85
- // TODO add logging
62
+ _create(TREASURY(), productNftId, abi.encode(setup));
86
63
  }
87
64
 
88
- function setPoolFees(
89
- NftId poolNftId,
90
- Fee memory stakingFee,
91
- Fee memory performanceFee
92
- ) external override // TODO add authz (only component owner service)
65
+ function setTreasuryInfo(
66
+ NftId productNftId,
67
+ TreasuryInfo memory info
68
+ )
69
+ external
70
+ // TODO add authz (only component module)
71
+ override
93
72
  {
94
- // TODO add validation
95
-
96
- PoolSetup storage setup = _poolSetup[poolNftId];
97
- setup.stakingFee = stakingFee;
98
- setup.performanceFee = performanceFee;
73
+ _updateData(TREASURY(), productNftId, abi.encode(info));
74
+ }
99
75
 
100
- // TODO add logging
76
+ function getProductNftId(
77
+ NftId componentNftId
78
+ ) external view returns (NftId productNftId) {
79
+ return _productNft[componentNftId];
101
80
  }
102
81
 
103
82
  function getTokenHandler(
@@ -106,23 +85,23 @@ abstract contract TreasuryModule is ITreasuryModule {
106
85
  return _tokenHandler[componentNftId];
107
86
  }
108
87
 
109
- function getProductSetup(
88
+ function hasTreasuryInfo(
110
89
  NftId productNftId
111
- ) external view override returns (ProductSetup memory setup) {
112
- return _productSetup[productNftId];
90
+ ) public view override returns (bool hasInfo) {
91
+ return _exists(TREASURY(), productNftId);
113
92
  }
114
93
 
115
- function getPoolSetup(
116
- NftId poolNftId
117
- ) external view override returns (PoolSetup memory setup) {
118
- return _poolSetup[poolNftId];
94
+ function getTreasuryInfo(
95
+ NftId productNftId
96
+ ) public view override returns (TreasuryInfo memory info) {
97
+ return abi.decode(_getData(TREASURY(), productNftId), (TreasuryInfo));
119
98
  }
120
99
 
121
100
  function calculateFeeAmount(
122
101
  uint256 amount,
123
102
  Fee memory fee
124
103
  ) public pure override returns (uint256 feeAmount, uint256 netAmount) {
125
- return FeeLib.calculateFee(amount, fee);
104
+ return FeeLib.calculateFee(fee, amount);
126
105
  }
127
106
 
128
107
  function getFee(
@@ -132,8 +111,8 @@ abstract contract TreasuryModule is ITreasuryModule {
132
111
  return FeeLib.toFee(fractionalFee, fixedFee);
133
112
  }
134
113
 
135
- function getZeroFee() external pure override returns (Fee memory fee) {
136
- return FeeLib.zeroFee();
114
+ function getZeroFee() external view override returns (Fee memory fee) {
115
+ return _zeroFee;
137
116
  }
138
117
 
139
118
  function getUFixed(