@etherisc/gif-next 0.0.2-7c3106f-930 → 0.0.2-7c7e7ba-408

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 (212) hide show
  1. package/README.md +4 -0
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +13 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +23 -15
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +13 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  12. package/artifacts/contracts/components/Pool.sol/Pool.json +21 -13
  13. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  14. package/artifacts/contracts/components/Product.sol/Product.json +21 -56
  15. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  16. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  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/SM.sol/SM.json +2 -2
  34. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  36. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  38. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +1 -1
  39. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +1 -1
  40. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +15 -2
  41. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1323 -19
  44. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  45. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +59 -0
  46. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.json +177 -84
  48. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +34 -34
  50. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +187 -37
  52. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +269 -41
  54. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +97 -13
  56. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +59 -0
  58. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  63. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  72. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +18 -18
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +716 -0
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
  78. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +87 -0
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +19 -31
  84. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +926 -0
  86. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +448 -0
  88. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +1110 -0
  90. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +480 -0
  92. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  93. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  94. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +201 -0
  95. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  96. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +94 -19
  97. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  98. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  99. package/artifacts/contracts/registry/Registry.sol/Registry.json +172 -49
  100. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  101. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +61 -29
  102. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +47 -34
  104. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  105. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  106. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  107. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  108. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  109. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  110. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  111. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  112. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +1 -1
  113. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  114. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  115. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  116. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  117. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  118. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  119. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +4 -4
  120. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  121. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
  122. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  123. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +2 -2
  124. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  125. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  126. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  127. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  128. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  129. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  130. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +4 -4
  131. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  132. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  133. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  134. package/artifacts/contracts/test/TestService.sol/TestService.json +11 -11
  135. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  136. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  137. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  138. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  139. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  140. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  141. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  142. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  143. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  144. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  145. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  146. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  147. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  148. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  149. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  150. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  151. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  152. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  153. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  154. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  155. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  156. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  157. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  162. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  164. package/contracts/components/BaseComponent.sol +8 -3
  165. package/contracts/components/Distribution.sol +11 -18
  166. package/contracts/components/IBaseComponent.sol +1 -0
  167. package/contracts/components/IDistributionComponent.sol +1 -0
  168. package/contracts/components/Pool.sol +5 -22
  169. package/contracts/components/Product.sol +29 -42
  170. package/contracts/instance/AccessManagedSimple.sol +5 -4
  171. package/contracts/instance/AccessManagerSimple.sol +10 -0
  172. package/contracts/instance/IInstance.sol +33 -7
  173. package/contracts/instance/IInstanceService.sol +21 -8
  174. package/contracts/instance/Instance.sol +32 -25
  175. package/contracts/instance/InstanceAccessManager.sol +1 -1
  176. package/contracts/instance/InstanceReader.sol +36 -1
  177. package/contracts/instance/InstanceService.sol +124 -28
  178. package/contracts/instance/InstanceServiceManager.sol +6 -5
  179. package/contracts/instance/base/ComponentServiceBase.sol +93 -8
  180. package/contracts/instance/module/IBundle.sol +1 -0
  181. package/contracts/instance/module/ISetup.sol +1 -0
  182. package/contracts/instance/service/ComponentOwnerService.sol +5 -5
  183. package/contracts/instance/service/DistributionService.sol +88 -0
  184. package/contracts/instance/service/DistributionServiceManager.sol +54 -0
  185. package/contracts/instance/service/IComponentOwnerService.sol +1 -1
  186. package/contracts/instance/service/IDistributionService.sol +1 -1
  187. package/contracts/instance/service/IPoolService.sol +5 -1
  188. package/contracts/instance/service/IProductService.sol +4 -4
  189. package/contracts/instance/service/PoolService.sol +201 -0
  190. package/contracts/instance/service/PoolServiceManager.sol +54 -0
  191. package/contracts/instance/service/ProductService.sol +567 -0
  192. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  193. package/contracts/registry/IRegistry.sol +26 -2
  194. package/contracts/registry/IRegistryService.sol +34 -19
  195. package/contracts/registry/Registry.sol +61 -36
  196. package/contracts/registry/RegistryService.sol +42 -123
  197. package/contracts/registry/RegistryServiceManager.sol +21 -5
  198. package/contracts/registry/TokenRegistry.sol +111 -0
  199. package/contracts/shared/ERC165.sol +6 -2
  200. package/contracts/{instance/base → shared}/IService.sol +3 -3
  201. package/contracts/shared/NftOwnable.sol +2 -4
  202. package/contracts/shared/Registerable.sol +1 -0
  203. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  204. package/contracts/shared/Service.sol +55 -0
  205. package/contracts/test/TestService.sol +3 -5
  206. package/contracts/types/RoleId.sol +8 -0
  207. package/contracts/types/StateId.sol +4 -0
  208. package/contracts/types/Version.sol +4 -1
  209. package/package.json +1 -1
  210. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  211. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  212. package/contracts/instance/base/ServiceBase.sol +0 -44
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/87bb0e6336af67aff324941d5e57b181.json"
3
+ "buildInfo": "../../../build-info/e737769505ed9ea3e2f60a7bdb83d7aa.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/87bb0e6336af67aff324941d5e57b181.json"
3
+ "buildInfo": "../../../build-info/e737769505ed9ea3e2f60a7bdb83d7aa.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/87bb0e6336af67aff324941d5e57b181.json"
3
+ "buildInfo": "../../../build-info/e737769505ed9ea3e2f60a7bdb83d7aa.json"
4
4
  }
@@ -131,8 +131,8 @@
131
131
  "type": "function"
132
132
  }
133
133
  ],
134
- "bytecode": "0x6102a461003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c806368aebf7b1161006557806368aebf7b14610119578063a42e52e914610127578063bc1b392d14610144578063f37f38f01461014b57600080fd5b8063057182b41461008c578063545ce21c146100bd57806367cb8ec1146100e7575b600080fd5b6100a861009a36600461020b565b67ffffffffffffffff161590565b60405190151581526020015b60405180910390f35b6100ce6100cb36600461020b565b90565b60405167ffffffffffffffff90911681526020016100b4565b6101066100f536600461020b565b60081b68ffffffffffffffff001690565b60405160ff1990911681526020016100b4565b6100ce6100cb36600461023c565b6100a861013536600461020b565b67ffffffffffffffff16151590565b60006100ce565b61015e61015936600461020b565b61016c565b6040519081526020016100b4565b600073__$c8f743efd2b4f0c9300f2558c784479d3e$__63f48016ce6014600885901b68ffffffffffffffff00166040516001600160e01b031960e085901b16815260ff909216600483015260ff19166024820152604401602060405180830381865af41580156101e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102059190610255565b92915050565b60006020828403121561021d57600080fd5b813567ffffffffffffffff8116811461023557600080fd5b9392505050565b60006020828403121561024e57600080fd5b5035919050565b60006020828403121561026757600080fd5b505191905056fea2646970667358221220c2f9ad21f7470fe03633259935663aa90115553713bf08b8aa003f63582c958364736f6c63430008140033",
135
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c806368aebf7b1161006557806368aebf7b14610119578063a42e52e914610127578063bc1b392d14610144578063f37f38f01461014b57600080fd5b8063057182b41461008c578063545ce21c146100bd57806367cb8ec1146100e7575b600080fd5b6100a861009a36600461020b565b67ffffffffffffffff161590565b60405190151581526020015b60405180910390f35b6100ce6100cb36600461020b565b90565b60405167ffffffffffffffff90911681526020016100b4565b6101066100f536600461020b565b60081b68ffffffffffffffff001690565b60405160ff1990911681526020016100b4565b6100ce6100cb36600461023c565b6100a861013536600461020b565b67ffffffffffffffff16151590565b60006100ce565b61015e61015936600461020b565b61016c565b6040519081526020016100b4565b600073__$c8f743efd2b4f0c9300f2558c784479d3e$__63f48016ce6014600885901b68ffffffffffffffff00166040516001600160e01b031960e085901b16815260ff909216600483015260ff19166024820152604401602060405180830381865af41580156101e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102059190610255565b92915050565b60006020828403121561021d57600080fd5b813567ffffffffffffffff8116811461023557600080fd5b9392505050565b60006020828403121561024e57600080fd5b5035919050565b60006020828403121561026757600080fd5b505191905056fea2646970667358221220c2f9ad21f7470fe03633259935663aa90115553713bf08b8aa003f63582c958364736f6c63430008140033",
134
+ "bytecode": "0x6102a461003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c806368aebf7b1161006557806368aebf7b14610119578063a42e52e914610127578063bc1b392d14610144578063f37f38f01461014b57600080fd5b8063057182b41461008c578063545ce21c146100bd57806367cb8ec1146100e7575b600080fd5b6100a861009a36600461020b565b67ffffffffffffffff161590565b60405190151581526020015b60405180910390f35b6100ce6100cb36600461020b565b90565b60405167ffffffffffffffff90911681526020016100b4565b6101066100f536600461020b565b60081b68ffffffffffffffff001690565b60405160ff1990911681526020016100b4565b6100ce6100cb36600461023c565b6100a861013536600461020b565b67ffffffffffffffff16151590565b60006100ce565b61015e61015936600461020b565b61016c565b6040519081526020016100b4565b600073__$c8f743efd2b4f0c9300f2558c784479d3e$__63f48016ce6014600885901b68ffffffffffffffff00166040516001600160e01b031960e085901b16815260ff909216600483015260ff19166024820152604401602060405180830381865af41580156101e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102059190610255565b92915050565b60006020828403121561021d57600080fd5b813567ffffffffffffffff8116811461023557600080fd5b9392505050565b60006020828403121561024e57600080fd5b5035919050565b60006020828403121561026757600080fd5b505191905056fea26469706673582212201bbe398c7ebcc3086285b26f4788921744a5d1e91626675009c8c003c20257c664736f6c63430008140033",
135
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c806368aebf7b1161006557806368aebf7b14610119578063a42e52e914610127578063bc1b392d14610144578063f37f38f01461014b57600080fd5b8063057182b41461008c578063545ce21c146100bd57806367cb8ec1146100e7575b600080fd5b6100a861009a36600461020b565b67ffffffffffffffff161590565b60405190151581526020015b60405180910390f35b6100ce6100cb36600461020b565b90565b60405167ffffffffffffffff90911681526020016100b4565b6101066100f536600461020b565b60081b68ffffffffffffffff001690565b60405160ff1990911681526020016100b4565b6100ce6100cb36600461023c565b6100a861013536600461020b565b67ffffffffffffffff16151590565b60006100ce565b61015e61015936600461020b565b61016c565b6040519081526020016100b4565b600073__$c8f743efd2b4f0c9300f2558c784479d3e$__63f48016ce6014600885901b68ffffffffffffffff00166040516001600160e01b031960e085901b16815260ff909216600483015260ff19166024820152604401602060405180830381865af41580156101e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102059190610255565b92915050565b60006020828403121561021d57600080fd5b813567ffffffffffffffff8116811461023557600080fd5b9392505050565b60006020828403121561024e57600080fd5b5035919050565b60006020828403121561026757600080fd5b505191905056fea26469706673582212201bbe398c7ebcc3086285b26f4788921744a5d1e91626675009c8c003c20257c664736f6c63430008140033",
136
136
  "linkReferences": {
137
137
  "contracts/types/Key32.sol": {
138
138
  "Key32Lib": [
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/87bb0e6336af67aff324941d5e57b181.json"
3
+ "buildInfo": "../../../build-info/e737769505ed9ea3e2f60a7bdb83d7aa.json"
4
4
  }
@@ -85,8 +85,8 @@
85
85
  "type": "function"
86
86
  }
87
87
  ],
88
- "bytecode": "0x61018c61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80632c2f8a671461005b5780636f91962014610083578063ac43d83414610098578063b2466acf146100c9575b600080fd5b61006e610069366004610108565b6100df565b60405190151581526020015b60405180910390f35b61006e61009136600461013b565b60ff161590565b6100ac6100a636600461013b565b60ff1690565b6040516bffffffffffffffffffffffff909116815260200161007a565b61006e6100d736600461013b565b60ff16151590565b600060ff808416908316145b9392505050565b803560ff8116811461010357600080fd5b919050565b6000806040838503121561011b57600080fd5b610124836100f2565b9150610132602084016100f2565b90509250929050565b60006020828403121561014d57600080fd5b6100eb826100f256fea264697066735822122087c0a1882ea3728cc059e9c0ca0fe6e5855441782f34522a7b4a441b773012a964736f6c63430008140033",
89
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80632c2f8a671461005b5780636f91962014610083578063ac43d83414610098578063b2466acf146100c9575b600080fd5b61006e610069366004610108565b6100df565b60405190151581526020015b60405180910390f35b61006e61009136600461013b565b60ff161590565b6100ac6100a636600461013b565b60ff1690565b6040516bffffffffffffffffffffffff909116815260200161007a565b61006e6100d736600461013b565b60ff16151590565b600060ff808416908316145b9392505050565b803560ff8116811461010357600080fd5b919050565b6000806040838503121561011b57600080fd5b610124836100f2565b9150610132602084016100f2565b90509250929050565b60006020828403121561014d57600080fd5b6100eb826100f256fea264697066735822122087c0a1882ea3728cc059e9c0ca0fe6e5855441782f34522a7b4a441b773012a964736f6c63430008140033",
88
+ "bytecode": "0x61018c61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80632c2f8a671461005b5780636f91962014610083578063ac43d83414610098578063b2466acf146100c9575b600080fd5b61006e610069366004610108565b6100df565b60405190151581526020015b60405180910390f35b61006e61009136600461013b565b60ff161590565b6100ac6100a636600461013b565b60ff1690565b6040516bffffffffffffffffffffffff909116815260200161007a565b61006e6100d736600461013b565b60ff16151590565b600060ff808416908316145b9392505050565b803560ff8116811461010357600080fd5b919050565b6000806040838503121561011b57600080fd5b610124836100f2565b9150610132602084016100f2565b90509250929050565b60006020828403121561014d57600080fd5b6100eb826100f256fea26469706673582212204cd4e6f2bb672e5640aaa5a4af92ef3714ca5bf00495f7a3790a03dec2aaa3fc64736f6c63430008140033",
89
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80632c2f8a671461005b5780636f91962014610083578063ac43d83414610098578063b2466acf146100c9575b600080fd5b61006e610069366004610108565b6100df565b60405190151581526020015b60405180910390f35b61006e61009136600461013b565b60ff161590565b6100ac6100a636600461013b565b60ff1690565b6040516bffffffffffffffffffffffff909116815260200161007a565b61006e6100d736600461013b565b60ff16151590565b600060ff808416908316145b9392505050565b803560ff8116811461010357600080fd5b919050565b6000806040838503121561011b57600080fd5b610124836100f2565b9150610132602084016100f2565b90509250929050565b60006020828403121561014d57600080fd5b6100eb826100f256fea26469706673582212204cd4e6f2bb672e5640aaa5a4af92ef3714ca5bf00495f7a3790a03dec2aaa3fc64736f6c63430008140033",
90
90
  "linkReferences": {},
91
91
  "deployedLinkReferences": {}
92
92
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/87bb0e6336af67aff324941d5e57b181.json"
3
+ "buildInfo": "../../../build-info/e737769505ed9ea3e2f60a7bdb83d7aa.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/87bb0e6336af67aff324941d5e57b181.json"
3
+ "buildInfo": "../../../build-info/e737769505ed9ea3e2f60a7bdb83d7aa.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/87bb0e6336af67aff324941d5e57b181.json"
3
+ "buildInfo": "../../../build-info/e737769505ed9ea3e2f60a7bdb83d7aa.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/87bb0e6336af67aff324941d5e57b181.json"
3
+ "buildInfo": "../../../build-info/e737769505ed9ea3e2f60a7bdb83d7aa.json"
4
4
  }
@@ -170,8 +170,8 @@
170
170
  "type": "function"
171
171
  }
172
172
  ],
173
- "bytecode": "0x61039161003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c80638e4ad86c116100655780638e4ad86c1461012157806394aa449c14610144578063a123b37c14610152578063c9e66e291461017957600080fd5b806304b8f6c5146100975780632efe0113146100b357806349a7111a146100c657806355601007146100fd575b600080fd5b60005b60405162ffffff90911681526020015b60405180910390f35b61009a6100c136600461026e565b610190565b6100d96100d436600461029a565b610231565b6040805160ff948516815292841660208401529216918101919091526060016100aa565b61011361010b36600461029a565b62ffffff1690565b6040519081526020016100aa565b61013261012f3660046102c6565b90565b60405160ff90911681526020016100aa565b61009a61012f3660046102df565b61016061010b36600461029a565b60405167ffffffffffffffff90911681526020016100aa565b61013261018736600461029a565b60101c60ff1690565b6000610100841080156101a4575061010083105b80156101b1575061010082105b61020c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5652532d3031303a56455253494f4e5f504152545f544f4f5f42604482015261494760f01b606482015260840160405180910390fd5b8161021f600885901b601087901b61031f565b610229919061031f565b949350505050565b600080808360ff601082901c166102488383610338565b915061ffff600883901c16600061025f8185610338565b92989197509195509350505050565b60008060006060848603121561028357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156102ac57600080fd5b813562ffffff811681146102bf57600080fd5b9392505050565b6000602082840312156102d857600080fd5b5035919050565b6000602082840312156102f157600080fd5b813567ffffffffffffffff811681146102bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561033257610332610309565b92915050565b62ffffff82811682821603908082111561035457610354610309565b509291505056fea2646970667358221220e42f77cfda39708b26a423d08fb99d9e3d65c337357ab7291eb4fdfec94256eb64736f6c63430008140033",
174
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c80638e4ad86c116100655780638e4ad86c1461012157806394aa449c14610144578063a123b37c14610152578063c9e66e291461017957600080fd5b806304b8f6c5146100975780632efe0113146100b357806349a7111a146100c657806355601007146100fd575b600080fd5b60005b60405162ffffff90911681526020015b60405180910390f35b61009a6100c136600461026e565b610190565b6100d96100d436600461029a565b610231565b6040805160ff948516815292841660208401529216918101919091526060016100aa565b61011361010b36600461029a565b62ffffff1690565b6040519081526020016100aa565b61013261012f3660046102c6565b90565b60405160ff90911681526020016100aa565b61009a61012f3660046102df565b61016061010b36600461029a565b60405167ffffffffffffffff90911681526020016100aa565b61013261018736600461029a565b60101c60ff1690565b6000610100841080156101a4575061010083105b80156101b1575061010082105b61020c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5652532d3031303a56455253494f4e5f504152545f544f4f5f42604482015261494760f01b606482015260840160405180910390fd5b8161021f600885901b601087901b61031f565b610229919061031f565b949350505050565b600080808360ff601082901c166102488383610338565b915061ffff600883901c16600061025f8185610338565b92989197509195509350505050565b60008060006060848603121561028357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156102ac57600080fd5b813562ffffff811681146102bf57600080fd5b9392505050565b6000602082840312156102d857600080fd5b5035919050565b6000602082840312156102f157600080fd5b813567ffffffffffffffff811681146102bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561033257610332610309565b92915050565b62ffffff82811682821603908082111561035457610354610309565b509291505056fea2646970667358221220e42f77cfda39708b26a423d08fb99d9e3d65c337357ab7291eb4fdfec94256eb64736f6c63430008140033",
173
+ "bytecode": "0x61039161003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c80638e4ad86c116100655780638e4ad86c1461012157806394aa449c14610144578063a123b37c14610152578063c9e66e291461017957600080fd5b806304b8f6c5146100975780632efe0113146100b357806349a7111a146100c657806355601007146100fd575b600080fd5b60005b60405162ffffff90911681526020015b60405180910390f35b61009a6100c136600461026e565b610190565b6100d96100d436600461029a565b610231565b6040805160ff948516815292841660208401529216918101919091526060016100aa565b61011361010b36600461029a565b62ffffff1690565b6040519081526020016100aa565b61013261012f3660046102c6565b90565b60405160ff90911681526020016100aa565b61009a61012f3660046102df565b61016061010b36600461029a565b60405167ffffffffffffffff90911681526020016100aa565b61013261018736600461029a565b60101c60ff1690565b6000610100841080156101a4575061010083105b80156101b1575061010082105b61020c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5652532d3031303a56455253494f4e5f504152545f544f4f5f42604482015261494760f01b606482015260840160405180910390fd5b8161021f600885901b601087901b61031f565b610229919061031f565b949350505050565b600080808360ff601082901c166102488383610338565b915061ffff600883901c16600061025f8185610338565b92989197509195509350505050565b60008060006060848603121561028357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156102ac57600080fd5b813562ffffff811681146102bf57600080fd5b9392505050565b6000602082840312156102d857600080fd5b5035919050565b6000602082840312156102f157600080fd5b813567ffffffffffffffff811681146102bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561033257610332610309565b92915050565b62ffffff82811682821603908082111561035457610354610309565b509291505056fea264697066735822122096e4b37266f82e0aaf6f30afa90c545c35f82576ca3b67d630233921e58f525b64736f6c63430008140033",
174
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c80638e4ad86c116100655780638e4ad86c1461012157806394aa449c14610144578063a123b37c14610152578063c9e66e291461017957600080fd5b806304b8f6c5146100975780632efe0113146100b357806349a7111a146100c657806355601007146100fd575b600080fd5b60005b60405162ffffff90911681526020015b60405180910390f35b61009a6100c136600461026e565b610190565b6100d96100d436600461029a565b610231565b6040805160ff948516815292841660208401529216918101919091526060016100aa565b61011361010b36600461029a565b62ffffff1690565b6040519081526020016100aa565b61013261012f3660046102c6565b90565b60405160ff90911681526020016100aa565b61009a61012f3660046102df565b61016061010b36600461029a565b60405167ffffffffffffffff90911681526020016100aa565b61013261018736600461029a565b60101c60ff1690565b6000610100841080156101a4575061010083105b80156101b1575061010082105b61020c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5652532d3031303a56455253494f4e5f504152545f544f4f5f42604482015261494760f01b606482015260840160405180910390fd5b8161021f600885901b601087901b61031f565b610229919061031f565b949350505050565b600080808360ff601082901c166102488383610338565b915061ffff600883901c16600061025f8185610338565b92989197509195509350505050565b60008060006060848603121561028357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156102ac57600080fd5b813562ffffff811681146102bf57600080fd5b9392505050565b6000602082840312156102d857600080fd5b5035919050565b6000602082840312156102f157600080fd5b813567ffffffffffffffff811681146102bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561033257610332610309565b92915050565b62ffffff82811682821603908082111561035457610354610309565b509291505056fea264697066735822122096e4b37266f82e0aaf6f30afa90c545c35f82576ca3b67d630233921e58f525b64736f6c63430008140033",
175
175
  "linkReferences": {},
176
176
  "deployedLinkReferences": {}
177
177
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/87bb0e6336af67aff324941d5e57b181.json"
3
+ "buildInfo": "../../../build-info/e737769505ed9ea3e2f60a7bdb83d7aa.json"
4
4
  }
@@ -7,7 +7,7 @@
7
7
  "inputs": [
8
8
  {
9
9
  "internalType": "VersionPart",
10
- "name": "x",
10
+ "name": "a",
11
11
  "type": "uint8"
12
12
  }
13
13
  ],
@@ -21,10 +21,29 @@
21
21
  ],
22
22
  "stateMutability": "pure",
23
23
  "type": "function"
24
+ },
25
+ {
26
+ "inputs": [
27
+ {
28
+ "internalType": "uint256",
29
+ "name": "a",
30
+ "type": "uint256"
31
+ }
32
+ ],
33
+ "name": "toVersionPart",
34
+ "outputs": [
35
+ {
36
+ "internalType": "VersionPart",
37
+ "name": "",
38
+ "type": "uint8"
39
+ }
40
+ ],
41
+ "stateMutability": "pure",
42
+ "type": "function"
24
43
  }
25
44
  ],
26
- "bytecode": "0x60b9610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063ac43d834146038575b600080fd5b60496043366004605b565b60ff1690565b60405190815260200160405180910390f35b600060208284031215606c57600080fd5b813560ff81168114607c57600080fd5b939250505056fea264697066735822122028c6578af7cf354c26921be53c7bafd817914c3fa380a53d5f0e3935a1b47c8b64736f6c63430008140033",
27
- "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063ac43d834146038575b600080fd5b60496043366004605b565b60ff1690565b60405190815260200160405180910390f35b600060208284031215606c57600080fd5b813560ff81168114607c57600080fd5b939250505056fea264697066735822122028c6578af7cf354c26921be53c7bafd817914c3fa380a53d5f0e3935a1b47c8b64736f6c63430008140033",
45
+ "bytecode": "0x60fb610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638e4ad86c146042578063ac43d834146067575b600080fd5b6050604d3660046085565b90565b60405160ff90911681526020015b60405180910390f35b60786072366004609d565b60ff1690565b604051908152602001605e565b600060208284031215609657600080fd5b5035919050565b60006020828403121560ae57600080fd5b813560ff8116811460be57600080fd5b939250505056fea264697066735822122074bb6f75f2cab9692d05e41844bf40283045a9440c662c37a97b2502d38207ed64736f6c63430008140033",
46
+ "deployedBytecode": "0x7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638e4ad86c146042578063ac43d834146067575b600080fd5b6050604d3660046085565b90565b60405160ff90911681526020015b60405180910390f35b60786072366004609d565b60ff1690565b604051908152602001605e565b600060208284031215609657600080fd5b5035919050565b60006020828403121560ae57600080fd5b813560ff8116811460be57600080fd5b939250505056fea264697066735822122074bb6f75f2cab9692d05e41844bf40283045a9440c662c37a97b2502d38207ed64736f6c63430008140033",
28
47
  "linkReferences": {},
29
48
  "deployedLinkReferences": {}
30
49
  }
@@ -11,13 +11,15 @@ import {IInstance} from "../instance/IInstance.sol";
11
11
  import {IInstance} from "../instance/IInstance.sol";
12
12
  import {IComponentOwnerService} from "../instance/service/IComponentOwnerService.sol";
13
13
  import {IBaseComponent} from "./IBaseComponent.sol";
14
- import {NftId} from "../types/NftId.sol";
14
+ import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
15
15
  import {ObjectType} from "../types/ObjectType.sol";
16
16
 
17
17
  abstract contract BaseComponent is
18
18
  Registerable,
19
19
  IBaseComponent
20
20
  {
21
+ using NftIdLib for NftId;
22
+
21
23
  IComponentOwnerService internal _componentOwnerService;
22
24
 
23
25
  address internal _deployer;
@@ -29,7 +31,6 @@ abstract contract BaseComponent is
29
31
  constructor(
30
32
  address registry,
31
33
  NftId instanceNftId,
32
- NftId productNftId,
33
34
  address token,
34
35
  ObjectType componentType,
35
36
  bool isInterceptor,
@@ -49,7 +50,6 @@ abstract contract BaseComponent is
49
50
  _componentOwnerService = _instance.getComponentOwnerService();
50
51
  _wallet = address(this);
51
52
  _token = IERC20Metadata(token);
52
- _productNftId = productNftId;
53
53
 
54
54
  _registerInterface(type(IBaseComponent).interfaceId);
55
55
  }
@@ -80,6 +80,11 @@ abstract contract BaseComponent is
80
80
  return _instance;
81
81
  }
82
82
 
83
+ function setProductNftId(NftId productNftId) public override onlyOwner {
84
+ require(_productNftId.eq(zeroNftId()), "product nft id already set");
85
+ _productNftId = productNftId;
86
+ }
87
+
83
88
  function getProductNftId() public view override returns (NftId productNftId) {
84
89
  return _productNftId;
85
90
  }
@@ -38,21 +38,19 @@ contract Distribution is
38
38
  constructor(
39
39
  address registry,
40
40
  NftId instanceNftId,
41
- NftId productNftId,
42
41
  // TODO refactor into tokenNftId
43
42
  address token,
44
43
  bool verifying,
45
44
  Fee memory distributionFee,
46
45
  address initialOwner
47
46
  )
48
- BaseComponent(registry, instanceNftId, productNftId, token, DISTRIBUTION(), true, initialOwner)
47
+ BaseComponent(registry, instanceNftId, token, DISTRIBUTION(), true, initialOwner)
49
48
  {
50
49
  _isVerifying = verifying;
51
50
  _initialDistributionFee = distributionFee;
52
51
 
53
- // TODO: reactivate when services are available again
54
- // _distributionService = _instance.getDistributionService();
55
- // _productService = _instance.getProductService();
52
+ _distributionService = _instance.getDistributionService();
53
+ _productService = _instance.getProductService();
56
54
 
57
55
  _registerInterface(type(IDistributionComponent).interfaceId);
58
56
  }
@@ -123,19 +121,10 @@ contract Distribution is
123
121
  }
124
122
 
125
123
  function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
126
- if (getNftId().eq(zeroNftId())) {
127
- return ISetup.DistributionSetupInfo(
128
- _productNftId,
129
- TokenHandler(address(0)),
130
- _initialDistributionFee,
131
- _isVerifying,
132
- address(0)
133
- );
134
- }
135
-
136
124
  InstanceReader reader = _instance.getInstanceReader();
137
125
  return reader.getDistributionSetupInfo(getNftId());
138
126
  }
127
+
139
128
 
140
129
  /// @dev returns true iff the component needs to be called when selling/renewing policis
141
130
  function isVerifying() external view returns (bool verifying) {
@@ -152,14 +141,18 @@ contract Distribution is
152
141
  {
153
142
  (
154
143
  IRegistry.ObjectInfo memory info,
155
- bytes memory data
156
144
  ) = super.getInitialInfo();
157
145
 
158
146
  return (
159
147
  info,
160
148
  abi.encode(
161
- _initialDistributionFee,
162
- _isVerifying
149
+ ISetup.DistributionSetupInfo(
150
+ _productNftId,
151
+ TokenHandler(address(_token)),
152
+ _initialDistributionFee,
153
+ _isVerifying,
154
+ address(this)
155
+ )
163
156
  )
164
157
  );
165
158
  }
@@ -19,6 +19,7 @@ interface IBaseComponent is IRegisterable {
19
19
 
20
20
  function getInstance() external view returns (IInstance instance);
21
21
 
22
+ function setProductNftId(NftId productNftId) external;
22
23
  function getProductNftId() external view returns (NftId productNftId);
23
24
 
24
25
  }
@@ -4,6 +4,7 @@ pragma solidity ^0.8.19;
4
4
  import {Fee} from "../types/Fee.sol";
5
5
  import {ReferralId} from "../types/Referral.sol";
6
6
  import {NftId} from "../types/NftId.sol";
7
+ import {ISetup} from "../instance/module/ISetup.sol";
7
8
 
8
9
  interface IDistributionComponent {
9
10
 
@@ -55,7 +55,6 @@ contract Pool is BaseComponent, IPoolComponent {
55
55
  constructor(
56
56
  address registry,
57
57
  NftId instanceNftId,
58
- NftId productNftId,
59
58
  // TODO refactor into tokenNftId
60
59
  address token,
61
60
  bool isInterceptor,
@@ -66,7 +65,7 @@ contract Pool is BaseComponent, IPoolComponent {
66
65
  Fee memory performanceFee,
67
66
  address initialOwner
68
67
  )
69
- BaseComponent(registry, instanceNftId, productNftId, token, POOL(), isInterceptor, initialOwner)
68
+ BaseComponent(registry, instanceNftId, token, POOL(), isInterceptor, initialOwner)
70
69
  {
71
70
  _isVerifying = verifying;
72
71
  // TODO add validation
@@ -75,9 +74,8 @@ contract Pool is BaseComponent, IPoolComponent {
75
74
  _initialStakingFee = stakingFee;
76
75
  _initialPerformanceFee = performanceFee;
77
76
 
78
- // TODO: reactivate when services are available again
79
- // _poolService = _instance.getPoolService();
80
- // _productService = _instance.getProductService();
77
+ _poolService = _instance.getPoolService();
78
+ _productService = _instance.getProductService();
81
79
 
82
80
  _registerInterface(type(IPoolComponent).interfaceId);
83
81
  }
@@ -170,20 +168,6 @@ contract Pool is BaseComponent, IPoolComponent {
170
168
  }
171
169
 
172
170
  function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
173
- // TODO fix this
174
- if (getNftId().eq(zeroNftId())) {
175
- return ISetup.PoolSetupInfo(
176
- _productNftId,
177
- TokenHandler(address(0)),
178
- _collateralizationLevel,
179
- _initialPoolFee,
180
- _initialStakingFee,
181
- _initialPerformanceFee,
182
- _isVerifying,
183
- _wallet
184
- );
185
- }
186
-
187
171
  InstanceReader reader = _instance.getInstanceReader();
188
172
  return reader.getPoolSetupInfo(getNftId());
189
173
  }
@@ -200,15 +184,14 @@ contract Pool is BaseComponent, IPoolComponent {
200
184
  {
201
185
  (
202
186
  IRegistry.ObjectInfo memory info,
203
- bytes memory data
204
187
  ) = super.getInitialInfo();
205
188
 
206
189
  return (
207
190
  info,
208
191
  abi.encode(
209
192
  ISetup.PoolSetupInfo(
210
- getProductNftId(),
211
- TokenHandler(address(0)),
193
+ _productNftId,
194
+ TokenHandler(address(_token)),
212
195
  _collateralizationLevel,
213
196
  _initialPoolFee,
214
197
  _initialStakingFee,
@@ -24,6 +24,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
24
24
  import {InstanceReader} from "../instance/InstanceReader.sol";
25
25
  import {ISetup} from "../instance/module/ISetup.sol";
26
26
  import {Pool} from "../components/Pool.sol";
27
+ import {Distribution} from "../components/Distribution.sol";
27
28
 
28
29
  import {zeroNftId} from "../types/NftId.sol";
29
30
 
@@ -32,7 +33,7 @@ contract Product is BaseComponent, IProductComponent {
32
33
 
33
34
  IProductService internal _productService;
34
35
  Pool internal _pool;
35
- address internal _distribution;
36
+ Distribution internal _distribution;
36
37
  Fee internal _initialProductFee;
37
38
  Fee internal _initialProcessingFee;
38
39
 
@@ -49,17 +50,16 @@ contract Product is BaseComponent, IProductComponent {
49
50
  Fee memory productFee,
50
51
  Fee memory processingFee,
51
52
  address initialOwner
52
- ) BaseComponent(registry, instanceNftid, zeroNftId(), token, PRODUCT(), isInterceptor, initialOwner) {
53
+ ) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
53
54
  // TODO add validation
54
- // TODO: reactivate when services are available again
55
- // _productService = _instance.getProductService();
55
+ _productService = _instance.getProductService();
56
56
  _pool = Pool(pool);
57
- _distribution = distribution;
57
+ _distribution = Distribution(distribution);
58
58
  _initialProductFee = productFee;
59
59
  _initialProcessingFee = processingFee;
60
60
 
61
61
  _poolNftId = getRegistry().getNftId(address(_pool));
62
- _distributionNftId = getRegistry().getNftId(_distribution);
62
+ _distributionNftId = getRegistry().getNftId(address(_distribution));
63
63
 
64
64
  _registerInterface(type(IProductComponent).interfaceId);
65
65
  }
@@ -118,13 +118,13 @@ contract Product is BaseComponent, IProductComponent {
118
118
  );
119
119
  }
120
120
 
121
- function _setRiskInfo(
121
+ function _updateRisk(
122
122
  RiskId id,
123
- IRisk.RiskInfo memory info
123
+ bytes memory data
124
124
  ) internal {
125
- _productService.setRiskInfo(
125
+ _productService.updateRisk(
126
126
  id,
127
- info
127
+ data
128
128
  );
129
129
  }
130
130
 
@@ -202,7 +202,7 @@ contract Product is BaseComponent, IProductComponent {
202
202
  }
203
203
 
204
204
  function getDistributionNftId() external view override returns (NftId distributionNftId) {
205
- return getRegistry().getNftId(_distribution);
205
+ return getRegistry().getNftId(address(_distribution));
206
206
  }
207
207
 
208
208
  // from product component
@@ -218,28 +218,12 @@ contract Product is BaseComponent, IProductComponent {
218
218
  }
219
219
 
220
220
  function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
221
- if (getNftId().eq(zeroNftId())) {
222
- return ISetup.ProductSetupInfo(
223
- _token,
224
- TokenHandler(address(0)),
225
- _distributionNftId,
226
- _poolNftId,
227
- FeeLib.zeroFee(), //_instance.getDistributionFee(_distributionNftId)
228
- _initialProductFee,
229
- _initialProcessingFee,
230
- FeeLib.zeroFee(), //_instance.getPoolFee(_poolNftId)
231
- FeeLib.zeroFee(), //_instance.getStakingFee(_poolNftId)
232
- FeeLib.zeroFee() //_instance.getPerformanceFee(_poolNftId)
233
- );
234
- }
235
-
236
221
  InstanceReader reader = _instance.getInstanceReader();
237
222
  return reader.getProductSetupInfo(getNftId());
238
223
  }
239
224
 
240
225
  // from IRegisterable
241
226
 
242
- // TODO used only once, occupies space
243
227
  function getInitialInfo()
244
228
  public
245
229
  view
@@ -251,7 +235,7 @@ contract Product is BaseComponent, IProductComponent {
251
235
  IRegistry.ObjectInfo memory productInfo,
252
236
  bytes memory data
253
237
  ) = super.getInitialInfo();
254
-
238
+
255
239
  // TODO read pool & distribution fees
256
240
  // 1) from pool -> the only option -> pool must be registered first?
257
241
  // 2) from instance -> all fees are set into instance at product registration which is ongoing here
@@ -261,35 +245,38 @@ contract Product is BaseComponent, IProductComponent {
261
245
 
262
246
  // from PoolComponent
263
247
  (
264
- IRegistry.ObjectInfo memory poolInfo,
248
+ ,
265
249
  bytes memory poolData
266
250
  ) = _pool.getInitialInfo();
251
+
252
+ (
253
+ ISetup.PoolSetupInfo memory poolSetupInfo
254
+ ) = abi.decode(poolData, (ISetup.PoolSetupInfo));
267
255
 
256
+ // from DistributionComponent
268
257
  (
269
- /*IPool.PoolInfo memory info*/,
270
- /*address wallet*/,
271
- /*IERC20Metadata token*/,
272
- Fee memory initialPoolFee,
273
- Fee memory initialStakingFee,
274
- Fee memory initialPerformanceFee
275
- ) = abi.decode(poolData, (ISetup.PoolSetupInfo, address, IERC20Metadata, Fee, Fee, Fee));
258
+ ,
259
+ bytes memory distributionData
260
+ ) = _distribution.getInitialInfo();
276
261
 
277
- // TODO from DistributionComponent
262
+ (
263
+ ISetup.DistributionSetupInfo memory distributionSetupInfo
264
+ ) = abi.decode(distributionData, (ISetup.DistributionSetupInfo));
278
265
 
279
266
  return (
280
267
  productInfo,
281
268
  abi.encode(
282
269
  ISetup.ProductSetupInfo(
283
270
  _token,
284
- TokenHandler(address(0)),
271
+ TokenHandler(address(_token)),
285
272
  _distributionNftId,
286
273
  _poolNftId,
287
- FeeLib.zeroFee(), //_instance.getDistributionFee(_distributionNftId)
274
+ distributionSetupInfo.distributionFee,
288
275
  _initialProductFee,
289
276
  _initialProcessingFee,
290
- initialPoolFee,
291
- initialStakingFee,
292
- initialPerformanceFee
277
+ poolSetupInfo.poolFee,
278
+ poolSetupInfo.stakingFee,
279
+ poolSetupInfo.performanceFee
293
280
  )
294
281
  )
295
282
  );
@@ -19,17 +19,18 @@ import {IAccessManagerSimple} from "./IAccessManagerSimple.sol";
19
19
  * functions, and ideally only used in `external` functions. See {restricted}.
20
20
  */
21
21
  abstract contract AccessManagedSimple is Context, IAccessManaged {
22
+ bool private _initialized;
22
23
  address private _authority;
23
24
 
24
25
  bool private _consumingSchedule;
25
26
 
26
- /**
27
- * @dev Initializes the contract connected to an initial authority.
28
- */
29
- constructor(address initialAuthority) {
27
+ function initializeAccessManagedSimple(address initialAuthority) internal {
28
+ require(!_initialized, "AccessManaged: already initialized");
30
29
  _setAuthority(initialAuthority);
30
+ _initialized = true;
31
31
  }
32
32
 
33
+
33
34
  /**
34
35
  * @dev Restricts access to a function as defined by the connected Authority for this contract and the
35
36
  * caller and selector of the function that entered the contract.
@@ -46,6 +46,8 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
46
46
  uint32 nonce;
47
47
  }
48
48
 
49
+ bool private _initialized;
50
+
49
51
  uint64 public constant ADMIN_ROLE = type(uint64).min; // 0
50
52
  uint64 public constant PUBLIC_ROLE = type(uint64).max; // 2**64-1
51
53
 
@@ -67,14 +69,22 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
67
69
  }
68
70
 
69
71
  constructor(address initialAdmin) {
72
+ initialize(initialAdmin);
73
+ }
74
+
75
+ function initialize(address initialAdmin) public {
76
+ require(!_initialized, "AccessManager: already initialized");
77
+
70
78
  if (initialAdmin == address(0)) {
71
79
  revert AccessManagerInvalidInitialAdmin(address(0));
72
80
  }
73
81
 
74
82
  // admin is active immediately and without any execution delay.
75
83
  _grantRole(ADMIN_ROLE, initialAdmin, 0, 0);
84
+ _initialized = true;
76
85
  }
77
86
 
87
+
78
88
  // =================================================== GETTERS ====================================================
79
89
  /// @inheritdoc IAccessManagerSimple
80
90
  function canCall(
@@ -9,20 +9,46 @@ import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
9
9
  import {IDistributionService} from "./service/IDistributionService.sol";
10
10
  import {IPoolService} from "./service/IPoolService.sol";
11
11
  import {IProductService} from "./service/IProductService.sol";
12
+ import {IBundle} from "./module/IBundle.sol";
12
13
  import {ISetup} from "./module/ISetup.sol";
13
14
  import {NftId} from "../types/NftId.sol";
15
+ import {StateId} from "../types/StateId.sol";
16
+ import {RiskId} from "../types/RiskId.sol";
17
+ import {IRisk} from "./module/IRisk.sol";
18
+ import {IPolicy} from "./module/IPolicy.sol";
19
+ import {IKeyValueStore} from "./base/IKeyValueStore.sol";
14
20
 
15
- interface IInstance is IERC165 {
21
+
22
+ interface IInstance is IERC165, IKeyValueStore {
16
23
 
17
24
  function getComponentOwnerService() external view returns (IComponentOwnerService);
18
- // TODO: renable these when we have the services
19
- // function getDistributionService() external view returns (IDistributionService);
20
- // function getProductService() external view returns (IProductService);
21
- // function getPoolService() external view returns (IPoolService);
25
+ function getDistributionService() external view returns (IDistributionService);
26
+ function getProductService() external view returns (IProductService);
27
+ function getPoolService() external view returns (IPoolService);
22
28
 
23
- function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external;
24
29
  function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external;
25
- function createPoolSetup(NftId distributionNftId, ISetup.PoolSetupInfo memory setup) external;
30
+ function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
31
+ function updateDistributionSetupState(NftId distributionNftId, StateId newState) external;
32
+
33
+ function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external;
34
+ function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external;
35
+ function updatePoolSetupState(NftId poolNftId, StateId newState) external;
36
+
37
+ function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external;
38
+ function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external;
39
+ function updateBundleState(NftId bundleNftId, StateId newState) external;
40
+
41
+ function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external;
42
+ function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
43
+ function updateProductSetupState(NftId productNftId, StateId newState) external;
44
+
45
+ function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
46
+ function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
47
+ function updateRiskState(RiskId riskId, StateId newState) external;
48
+
49
+ function createPolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy) external;
50
+ function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
51
+ function updatePolicyState(NftId policyNftId, StateId newState) external;
26
52
 
27
53
  function getInstanceReader() external view returns (InstanceReader);
28
54
  }