@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,32 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../types/NftId.sol";
5
+ import {ObjectType} from "../types/ObjectType.sol";
6
+ import {RoleId} from "../types/RoleId.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+
10
+ import {IRegisterable} from "../shared/IRegisterable.sol";
11
+ import {IBaseComponent} from "../components/IBaseComponent.sol";
12
+
13
+ import {AccessManagerSimple} from "./AccessManagerSimple.sol";
14
+ import {Instance} from "./Instance.sol";
15
+ import {InstanceReader} from "./InstanceReader.sol";
16
+ import {BundleManager} from "./BundleManager.sol";
17
+
18
+ interface IInstanceService is IService {
19
+
20
+ event LogInstanceCloned(address clonedAccessManagerAddress, address clonedInstanceAddress, address clonedInstanceReaderAddress, NftId clonedInstanceNftId);
21
+
22
+ function createInstanceClone()
23
+ external
24
+ returns (
25
+ AccessManagerSimple clonedAccessManager,
26
+ Instance clonedInstance,
27
+ NftId instanceNftId,
28
+ InstanceReader clonedInstanceReader,
29
+ BundleManager clonedBundleManager
30
+ );
31
+ }
32
+
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {EnumerableSet} from "@openzeppelin5/contracts/utils/structs/EnumerableSet.sol";
5
- import {ShortString, ShortStrings} from "@openzeppelin5/contracts/utils/ShortStrings.sol";
4
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
6
 
7
7
  import {AccessManagedSimple} from "./AccessManagedSimple.sol";
8
8
  import {AccessManagerSimple} from "./AccessManagerSimple.sol";
@@ -12,17 +12,31 @@ import {IPolicy} from "./module/IPolicy.sol";
12
12
  import {IRisk} from "./module/IRisk.sol";
13
13
  import {ISetup} from "./module/ISetup.sol";
14
14
  import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
15
- import {KeyValueStore} from "../instance/base/KeyValueStore.sol";
15
+ import {KeyValueStore} from "./base/KeyValueStore.sol";
16
+ import {IInstance} from "./IInstance.sol";
17
+ import {InstanceReader} from "./InstanceReader.sol";
18
+ import {BundleManager} from "./BundleManager.sol";
16
19
  import {NftId} from "../types/NftId.sol";
17
20
  import {NumberId} from "../types/NumberId.sol";
18
- import {ObjectType, BUNDLE, DISTRIBUTION, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
21
+ import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
19
22
  import {RiskId, RiskIdLib} from "../types/RiskId.sol";
20
23
  import {RoleId, RoleIdLib} from "../types/RoleId.sol";
21
24
  import {StateId, ACTIVE} from "../types/StateId.sol";
25
+ import {ERC165} from "../shared/ERC165.sol";
26
+ import {Registerable} from "../shared/Registerable.sol";
27
+ import {ComponentOwnerService} from "./service/ComponentOwnerService.sol";
28
+ import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
29
+ import {IDistributionService} from "./service/IDistributionService.sol";
30
+ import {IPoolService} from "./service/IPoolService.sol";
31
+ import {IProductService} from "./service/IProductService.sol";
32
+ import {VersionPart} from "../types/Version.sol";
22
33
 
23
34
  contract Instance is
24
35
  AccessManagedSimple,
25
- KeyValueStore
36
+ KeyValueStore,
37
+ IInstance,
38
+ ERC165,
39
+ Registerable
26
40
  {
27
41
 
28
42
  uint64 public constant ADMIN_ROLE = type(uint64).min;
@@ -31,6 +45,8 @@ contract Instance is
31
45
 
32
46
  uint32 public constant EXECUTION_DELAY = 0;
33
47
 
48
+ bool private _initialized;
49
+
34
50
  mapping(ShortString name => RoleId roleId) internal _role;
35
51
  mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
36
52
  RoleId [] internal _roles;
@@ -38,13 +54,27 @@ contract Instance is
38
54
  mapping(ShortString name => address target) internal _target;
39
55
 
40
56
  AccessManagerSimple internal _accessManager;
57
+ InstanceReader internal _instanceReader;
58
+ BundleManager internal _bundleManager;
41
59
 
42
- constructor(address accessManagerAddress)
43
- AccessManagedSimple(accessManagerAddress)
60
+ constructor(address accessManagerAddress, address registryAddress, NftId registryNftId)
44
61
  {
62
+ initialize(accessManagerAddress, registryAddress, registryNftId, msg.sender);
63
+ }
64
+
65
+ function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner) public {
66
+ require(!_initialized, "Contract instance has already been initialized");
67
+
68
+ initializeAccessManagedSimple(accessManagerAddress);
69
+
45
70
  _accessManager = AccessManagerSimple(accessManagerAddress);
46
71
  _createRole(RoleIdLib.toRoleId(ADMIN_ROLE), "AdminRole", false, false);
47
72
  _createRole(RoleIdLib.toRoleId(PUBLIC_ROLE), "PublicRole", false, false);
73
+
74
+ _initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
75
+
76
+ _registerInterface(type(IInstance).interfaceId);
77
+ _initialized = true;
48
78
  }
49
79
 
50
80
  //--- Role ------------------------------------------------------//
@@ -181,11 +211,11 @@ contract Instance is
181
211
  }
182
212
 
183
213
  //--- DistributionSetup ------------------------------------------------------//
184
- function createDistributionSetup(NftId distributionNftId, ISetup.ProductSetupInfo memory setup) external restricted() {
214
+ function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external restricted() {
185
215
  create(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup));
186
216
  }
187
217
 
188
- function updateDistributionSetup(NftId distributionNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external restricted() {
218
+ function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external restricted() {
189
219
  update(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup), newState);
190
220
  }
191
221
 
@@ -194,16 +224,16 @@ contract Instance is
194
224
  }
195
225
 
196
226
  //--- PoolSetup ------------------------------------------------------//
197
- function createPoolSetup(NftId distributionNftId, ISetup.ProductSetupInfo memory setup) external restricted() {
198
- create(_toNftKey32(distributionNftId, POOL()), abi.encode(setup));
227
+ function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external restricted() {
228
+ create(_toNftKey32(poolNftId, POOL()), abi.encode(setup));
199
229
  }
200
230
 
201
- function updatePoolSetup(NftId distributionNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external restricted() {
202
- update(_toNftKey32(distributionNftId, POOL()), abi.encode(setup), newState);
231
+ function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external restricted() {
232
+ update(_toNftKey32(poolNftId, POOL()), abi.encode(setup), newState);
203
233
  }
204
234
 
205
- function updatePoolSetupState(NftId distributionNftId, StateId newState) external restricted() {
206
- updateState(_toNftKey32(distributionNftId, POOL()), newState);
235
+ function updatePoolSetupState(NftId poolNftId, StateId newState) external restricted() {
236
+ updateState(_toNftKey32(poolNftId, POOL()), newState);
207
237
  }
208
238
 
209
239
  //--- DistributorType ---------------------------------------------------//
@@ -387,4 +417,38 @@ contract Instance is
387
417
  function toPolicyKey32(NftId policyNftId) public pure returns (Key32) {
388
418
  return policyNftId.toKey32(POLICY());
389
419
  }
420
+
421
+ function getComponentOwnerService() external view returns (IComponentOwnerService) {
422
+ return ComponentOwnerService(_registry.getServiceAddress("ComponentOwnerService", VersionPart.wrap(3)));
423
+ }
424
+
425
+ function getDistributionService() external view returns (IDistributionService) {
426
+ return IDistributionService(_registry.getServiceAddress("DistributionService", VersionPart.wrap(3)));
427
+ }
428
+
429
+ function getProductService() external view returns (IProductService) {
430
+ return IProductService(_registry.getServiceAddress("ProductService", VersionPart.wrap(3)));
431
+ }
432
+
433
+ function getPoolService() external view returns (IPoolService) {
434
+ return IPoolService(_registry.getServiceAddress("PoolService", VersionPart.wrap(3)));
435
+ }
436
+
437
+ function setInstanceReader(InstanceReader instanceReader) external restricted() {
438
+ require(address(_instanceReader) == address(0), "InstanceReader is set");
439
+ _instanceReader = instanceReader;
440
+ }
441
+
442
+ function getInstanceReader() external view returns (InstanceReader) {
443
+ return _instanceReader;
444
+ }
445
+
446
+ function setBundleManager(BundleManager bundleManager) external restricted() {
447
+ require(address(_bundleManager) == address(0), "BundleManager is set");
448
+ _bundleManager = bundleManager;
449
+ }
450
+
451
+ function getBundleManager() external view returns (BundleManager) {
452
+ return _bundleManager;
453
+ }
390
454
  }
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {EnumerableSet} from "@openzeppelin5/contracts/utils/structs/EnumerableSet.sol";
5
- import {ShortString, ShortStrings} from "@openzeppelin5/contracts/utils/ShortStrings.sol";
4
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
6
 
7
7
  import {AccessManagedSimple} from "./AccessManagedSimple.sol";
8
8
  import {AccessManagerSimple} from "./AccessManagerSimple.sol";
@@ -79,9 +79,9 @@ contract InstanceAccessManager is
79
79
  AccessManagerSimple internal _accessManager;
80
80
 
81
81
  constructor(address accessManager)
82
- AccessManagedSimple(accessManager)
83
82
  {
84
83
  _accessManager = AccessManagerSimple(accessManager);
84
+ initializeAccessManagedSimple(accessManager);
85
85
 
86
86
  _createRole(RoleIdLib.toRoleId(_accessManager.ADMIN_ROLE()), ADMIN_ROLE_NAME, false, false);
87
87
  _createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
@@ -0,0 +1,315 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {DistributorType} from "../types/DistributorType.sol";
7
+ import {Fee, FeeLib} from "../types/Fee.sol";
8
+ import {Key32} from "../types/Key32.sol";
9
+ import {NftId} from "../types/NftId.sol";
10
+ import {ObjectType, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, TREASURY, BUNDLE} from "../types/ObjectType.sol";
11
+ import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../types/Referral.sol";
12
+ import {Registerable} from "../shared/Registerable.sol";
13
+ import {RiskId} from "../types/RiskId.sol";
14
+ import {UFixed, MathLib, UFixedLib} from "../types/UFixed.sol";
15
+ import {Version} from "../types/Version.sol";
16
+ import {StateId} from "../types/StateId.sol";
17
+
18
+ import {IRegistry} from "../registry/IRegistry.sol";
19
+ import {IBundle} from "../instance/module/IBundle.sol";
20
+ import {IDistribution} from "../instance/module/IDistribution.sol";
21
+ import {IInstance} from "./IInstance.sol";
22
+ import {IKeyValueStore} from "../instance/base/IKeyValueStore.sol";
23
+ import {IPolicy} from "../instance/module/IPolicy.sol";
24
+ import {IRisk} from "../instance/module/IRisk.sol";
25
+ import {ISetup} from "../instance/module/ISetup.sol";
26
+ import {ITreasury} from "../instance/module/ITreasury.sol";
27
+ import {TimestampLib} from "../types/Timestamp.sol";
28
+
29
+
30
+ contract InstanceReader {
31
+ bool private _initialized;
32
+
33
+ IRegistry internal _registry;
34
+ NftId internal _instanceNftId;
35
+ IInstance internal _instance;
36
+ IKeyValueStore internal _store;
37
+
38
+ constructor(
39
+ address registry,
40
+ NftId instanceNftId
41
+ )
42
+ {
43
+ initialize(registry, instanceNftId);
44
+ }
45
+
46
+ function initialize(address registry, NftId instanceNftId) public {
47
+ require(!_initialized, "ERROR:CRD-000:ALREADY_INITIALIZED");
48
+
49
+ require(
50
+ address(registry) != address(0),
51
+ "ERROR:CRD-001:REGISTRY_ZERO");
52
+
53
+ require(
54
+ instanceNftId.gtz(),
55
+ "ERROR:CRD-002:NFT_ID_ZERO");
56
+
57
+ _registry = IRegistry(registry);
58
+ _instanceNftId = instanceNftId;
59
+ IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(_instanceNftId);
60
+
61
+ require(
62
+ instanceInfo.objectType == INSTANCE(),
63
+ "ERROR:CRD-003:PARENT_NOT_INSTANCE");
64
+
65
+ _instance = IInstance(instanceInfo.objectAddress);
66
+ _store = IKeyValueStore(instanceInfo.objectAddress);
67
+
68
+ _initialized = true;
69
+ }
70
+
71
+
72
+ // module specific functions
73
+
74
+ function getPolicyInfo(NftId policyNftId)
75
+ public
76
+ view
77
+ returns (IPolicy.PolicyInfo memory info)
78
+ {
79
+ bytes memory data = _store.getData(toPolicyKey(policyNftId));
80
+ if (data.length > 0) {
81
+ return abi.decode(data, (IPolicy.PolicyInfo));
82
+ }
83
+ }
84
+
85
+ function getPolicyState(NftId policyNftId)
86
+ public
87
+ view
88
+ returns (StateId state)
89
+ {
90
+ return _instance.getState(toPolicyKey(policyNftId));
91
+ }
92
+
93
+ function getRiskInfo(RiskId riskId)
94
+ public
95
+ view
96
+ returns (IRisk.RiskInfo memory info)
97
+ {
98
+ bytes memory data = _store.getData(riskId.toKey32());
99
+ if (data.length > 0) {
100
+ return abi.decode(data, (IRisk.RiskInfo));
101
+ }
102
+ }
103
+
104
+ function getTokenHandler(NftId productNftId)
105
+ public
106
+ view
107
+ returns (address tokenHandler)
108
+ {
109
+ bytes memory data = _store.getData(toTreasuryKey(productNftId));
110
+
111
+ if (data.length > 0) {
112
+ ITreasury.TreasuryInfo memory info = abi.decode(data, (ITreasury.TreasuryInfo));
113
+ return address(info.tokenHandler);
114
+ }
115
+ }
116
+
117
+ function getTreasuryInfo(NftId productNftId)
118
+ public
119
+ view
120
+ returns (ITreasury.TreasuryInfo memory info)
121
+ {
122
+ bytes memory data = _store.getData(toTreasuryKey(productNftId));
123
+ if (data.length > 0) {
124
+ return abi.decode(data, (ITreasury.TreasuryInfo));
125
+ }
126
+ }
127
+
128
+ function getBundleInfo(NftId bundleNftId)
129
+ public
130
+ view
131
+ returns (IBundle.BundleInfo memory info)
132
+ {
133
+ bytes memory data = _store.getData(toBundleKey(bundleNftId));
134
+ if (data.length > 0) {
135
+ return abi.decode(data, (IBundle.BundleInfo));
136
+ }
137
+ }
138
+
139
+ function getDistributorTypeInfo(DistributorType distributorType)
140
+ public
141
+ view
142
+ returns (IDistribution.DistributorTypeInfo memory info)
143
+ {
144
+ bytes memory data = _store.getData(distributorType.toKey32());
145
+ if (data.length > 0) {
146
+ return abi.decode(data, (IDistribution.DistributorTypeInfo));
147
+ }
148
+ }
149
+
150
+ function getDistributorInfo(NftId distributorNftId)
151
+ public
152
+ view
153
+ returns (IDistribution.DistributorInfo memory info)
154
+ {
155
+ bytes memory data = _store.getData(toDistributorKey(distributorNftId));
156
+ if (data.length > 0) {
157
+ return abi.decode(data, (IDistribution.DistributorInfo));
158
+ }
159
+ }
160
+
161
+ function getDistributionSetupInfo(NftId distributionNftId)
162
+ public
163
+ view
164
+ returns (ISetup.DistributionSetupInfo memory info)
165
+ {
166
+ bytes memory data = _store.getData(toDistributionKey(distributionNftId));
167
+ if (data.length > 0) {
168
+ return abi.decode(data, (ISetup.DistributionSetupInfo));
169
+ }
170
+ }
171
+
172
+ function getPoolSetupInfo(NftId poolNftId)
173
+ public
174
+ view
175
+ returns (ISetup.PoolSetupInfo memory info)
176
+ {
177
+ bytes memory data = _store.getData(toPoolKey(poolNftId));
178
+ if (data.length > 0) {
179
+ return abi.decode(data, (ISetup.PoolSetupInfo));
180
+ }
181
+ }
182
+
183
+ function getProductSetupInfo(NftId productNftId)
184
+ public
185
+ view
186
+ returns (ISetup.ProductSetupInfo memory info)
187
+ {
188
+ bytes memory data = _store.getData(toProductKey(productNftId));
189
+ if (data.length > 0) {
190
+ return abi.decode(data, (ISetup.ProductSetupInfo));
191
+ }
192
+ }
193
+
194
+ function getReferralInfo(ReferralId referralId)
195
+ public
196
+ view
197
+ returns (IDistribution.ReferralInfo memory info)
198
+ {
199
+ bytes memory data = _store.getData(referralId.toKey32());
200
+ if (data.length > 0) {
201
+ return abi.decode(data, (IDistribution.ReferralInfo));
202
+ }
203
+ }
204
+
205
+
206
+ function getMetadata(Key32 key)
207
+ public
208
+ view
209
+ returns (IKeyValueStore.Metadata memory metadata)
210
+ {
211
+ return _store.getMetadata(key);
212
+ }
213
+
214
+
215
+ function toReferralId(
216
+ NftId distributionNftId,
217
+ string memory referralCode
218
+ )
219
+ public
220
+ pure
221
+ returns (ReferralId referralId)
222
+ {
223
+ return ReferralLib.toReferralId(
224
+ distributionNftId,
225
+ referralCode);
226
+ }
227
+
228
+
229
+ function getDiscountPercentage(ReferralId referralId)
230
+ public
231
+ view
232
+ returns (
233
+ UFixed discountPercentage,
234
+ ReferralStatus status
235
+ )
236
+ {
237
+ IDistribution.ReferralInfo memory info = getReferralInfo(
238
+ referralId);
239
+
240
+ if (info.expiryAt.eqz()) {
241
+ return (
242
+ UFixedLib.zero(),
243
+ REFERRAL_ERROR_UNKNOWN());
244
+ }
245
+
246
+ if (info.expiryAt < TimestampLib.blockTimestamp()) {
247
+ return (
248
+ UFixedLib.zero(),
249
+ REFERRAL_ERROR_EXPIRED());
250
+ }
251
+
252
+ if (info.usedReferrals >= info.maxReferrals) {
253
+ return (
254
+ UFixedLib.zero(),
255
+ REFERRAL_ERROR_EXHAUSTED());
256
+ }
257
+
258
+ return (
259
+ info.discountPercentage,
260
+ REFERRAL_OK()
261
+ );
262
+ }
263
+
264
+
265
+ function toTreasuryKey(NftId productNftId) public pure returns (Key32) {
266
+ return productNftId.toKey32(TREASURY());
267
+ }
268
+
269
+
270
+ function toPolicyKey(NftId policyNftId) public pure returns (Key32) {
271
+ return policyNftId.toKey32(POLICY());
272
+ }
273
+
274
+
275
+ function toDistributorKey(NftId distributorNftId) public pure returns (Key32) {
276
+ return distributorNftId.toKey32(DISTRIBUTOR());
277
+ }
278
+
279
+ function toDistributionKey(NftId distributionNftId) public pure returns (Key32) {
280
+ return distributionNftId.toKey32(DISTRIBUTION());
281
+ }
282
+
283
+ function toBundleKey(NftId poolNftId) public pure returns (Key32) {
284
+ return poolNftId.toKey32(BUNDLE());
285
+ }
286
+
287
+ function toPoolKey(NftId poolNftId) public pure returns (Key32) {
288
+ return poolNftId.toKey32(POOL());
289
+ }
290
+
291
+ function toProductKey(NftId productNftId) public pure returns (Key32) {
292
+ return productNftId.toKey32(PRODUCT());
293
+ }
294
+
295
+ // low level function
296
+ function getInstance() external view returns (IInstance instance) {
297
+ return _instance;
298
+ }
299
+
300
+ function getInstanceStore() external view returns (IKeyValueStore store) {
301
+ return _store;
302
+ }
303
+
304
+ function getInstanceNftId() external view returns (NftId nftId) {
305
+ return _instanceNftId;
306
+ }
307
+
308
+ function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
309
+ return UFixedLib.toUFixed(value, exp);
310
+ }
311
+
312
+ function toInt(UFixed value) public pure returns (uint256) {
313
+ return UFixedLib.toInt(value);
314
+ }
315
+ }