@etherisc/gif-next 0.0.2-94be5d8-181 → 0.0.2-94dc606-665

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 (195) 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 +75 -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/IDistributionComponent.sol/IDistributionComponent.json +52 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  12. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  13. package/artifacts/contracts/components/Pool.sol/Pool.json +29 -13
  14. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  15. package/artifacts/contracts/components/Product.sol/Product.json +39 -18
  16. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  35. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +1 -1
  40. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +1 -1
  41. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +15 -2
  42. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  44. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +93 -0
  45. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  46. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +59 -0
  47. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  48. package/artifacts/contracts/instance/Instance.sol/Instance.json +137 -80
  49. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  50. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +34 -34
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +63 -37
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +189 -41
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +57 -9
  57. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  58. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +5 -0
  59. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  64. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +18 -18
  75. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +657 -0
  77. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +436 -0
  79. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  83. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  84. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  85. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +309 -0
  86. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  87. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -19
  88. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  89. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  90. package/artifacts/contracts/registry/Registry.sol/Registry.json +258 -24
  91. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  92. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +20 -44
  93. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  94. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +49 -28
  95. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  96. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  97. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  98. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  99. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  100. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  101. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  102. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  103. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +1 -1
  104. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  105. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  106. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  107. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  108. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  109. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  110. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +4 -4
  111. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  112. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
  113. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  114. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +2 -2
  115. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  116. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  117. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  118. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  119. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  120. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  121. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +4 -4
  122. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  123. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  124. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  125. package/artifacts/contracts/test/TestService.sol/TestService.json +11 -11
  126. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  127. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  128. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  129. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  130. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  131. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  132. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  133. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  134. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  135. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  136. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  137. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  138. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  139. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  140. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  141. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  142. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  143. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  144. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  145. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  146. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  147. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  148. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  149. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  150. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  151. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  152. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  153. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  154. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  155. package/contracts/components/BaseComponent.sol +8 -3
  156. package/contracts/components/Distribution.sol +13 -13
  157. package/contracts/components/IBaseComponent.sol +1 -0
  158. package/contracts/components/IDistributionComponent.sol +3 -0
  159. package/contracts/components/Pool.sol +1 -2
  160. package/contracts/components/Product.sol +1 -1
  161. package/contracts/instance/AccessManagedSimple.sol +5 -4
  162. package/contracts/instance/AccessManagerSimple.sol +10 -0
  163. package/contracts/instance/IInstance.sol +6 -2
  164. package/contracts/instance/IInstanceService.sol +21 -8
  165. package/contracts/instance/Instance.sol +18 -11
  166. package/contracts/instance/InstanceAccessManager.sol +1 -1
  167. package/contracts/instance/InstanceReader.sol +10 -0
  168. package/contracts/instance/InstanceService.sol +95 -27
  169. package/contracts/instance/base/ComponentServiceBase.sol +4 -12
  170. package/contracts/instance/service/ComponentOwnerService.sol +5 -5
  171. package/contracts/instance/service/DistributionService.sol +105 -0
  172. package/contracts/instance/service/DistributionServiceManager.sol +53 -0
  173. package/contracts/instance/service/IComponentOwnerService.sol +1 -1
  174. package/contracts/instance/service/IDistributionService.sol +1 -1
  175. package/contracts/instance/service/IPoolService.sol +1 -1
  176. package/contracts/instance/service/IProductService.sol +1 -1
  177. package/contracts/registry/IRegistry.sol +39 -2
  178. package/contracts/registry/IRegistryService.sol +7 -9
  179. package/contracts/registry/Registry.sol +95 -29
  180. package/contracts/registry/RegistryService.sol +14 -54
  181. package/contracts/registry/RegistryServiceManager.sol +21 -5
  182. package/contracts/registry/TokenRegistry.sol +111 -0
  183. package/contracts/shared/ERC165.sol +6 -2
  184. package/contracts/{instance/base → shared}/IService.sol +3 -3
  185. package/contracts/shared/Registerable.sol +1 -0
  186. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  187. package/contracts/shared/Service.sol +54 -0
  188. package/contracts/test/TestService.sol +3 -5
  189. package/contracts/types/RoleId.sol +6 -0
  190. package/contracts/types/StateId.sol +4 -0
  191. package/contracts/types/Version.sol +4 -1
  192. package/package.json +1 -1
  193. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  194. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  195. 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/87988637569758c4560bd9f4a1a8375d.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/87988637569758c4560bd9f4a1a8375d.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/87988637569758c4560bd9f4a1a8375d.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$__63f48016ce6014600885901b68ffffffffffffffff00166040516001600160e01b031960e085901b16815260ff909216600483015260ff19166024820152604401602060405180830381865af41580156101e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102059190610255565b92915050565b60006020828403121561021d57600080fd5b813567ffffffffffffffff8116811461023557600080fd5b9392505050565b60006020828403121561024e57600080fd5b5035919050565b60006020828403121561026757600080fd5b505191905056fea26469706673582212207d0e6c66d99957c657e0e225c34b93931622129ac81b0c5422f979205662592d64736f6c63430008140033",
135
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100875760003560e01c806368aebf7b1161006557806368aebf7b14610119578063a42e52e914610127578063bc1b392d14610144578063f37f38f01461014b57600080fd5b8063057182b41461008c578063545ce21c146100bd57806367cb8ec1146100e7575b600080fd5b6100a861009a36600461020b565b67ffffffffffffffff161590565b60405190151581526020015b60405180910390f35b6100ce6100cb36600461020b565b90565b60405167ffffffffffffffff90911681526020016100b4565b6101066100f536600461020b565b60081b68ffffffffffffffff001690565b60405160ff1990911681526020016100b4565b6100ce6100cb36600461023c565b6100a861013536600461020b565b67ffffffffffffffff16151590565b60006100ce565b61015e61015936600461020b565b61016c565b6040519081526020016100b4565b600073__$c8f743efd2b4f0c9300f2558c784479d3e$__63f48016ce6014600885901b68ffffffffffffffff00166040516001600160e01b031960e085901b16815260ff909216600483015260ff19166024820152604401602060405180830381865af41580156101e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102059190610255565b92915050565b60006020828403121561021d57600080fd5b813567ffffffffffffffff8116811461023557600080fd5b9392505050565b60006020828403121561024e57600080fd5b5035919050565b60006020828403121561026757600080fd5b505191905056fea26469706673582212207d0e6c66d99957c657e0e225c34b93931622129ac81b0c5422f979205662592d64736f6c63430008140033",
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/87988637569758c4560bd9f4a1a8375d.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/87988637569758c4560bd9f4a1a8375d.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/87988637569758c4560bd9f4a1a8375d.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/87988637569758c4560bd9f4a1a8375d.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/87988637569758c4560bd9f4a1a8375d.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/87988637569758c4560bd9f4a1a8375d.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,20 +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
 
52
+ _distributionService = _instance.getDistributionService();
53
53
  // TODO: reactivate when services are available again
54
- // _distributionService = _instance.getDistributionService();
55
54
  // _productService = _instance.getProductService();
56
55
 
57
56
  _registerInterface(type(IDistributionComponent).interfaceId);
@@ -122,20 +121,21 @@ contract Distribution is
122
121
  return false;
123
122
  }
124
123
 
125
- 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
- }
124
+ function getInitialSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
125
+ return ISetup.DistributionSetupInfo(
126
+ _productNftId,
127
+ TokenHandler(address(_token)),
128
+ _initialDistributionFee,
129
+ _isVerifying,
130
+ address(this)
131
+ );
132
+ }
135
133
 
134
+ function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
136
135
  InstanceReader reader = _instance.getInstanceReader();
137
136
  return reader.getDistributionSetupInfo(getNftId());
138
137
  }
138
+
139
139
 
140
140
  /// @dev returns true iff the component needs to be called when selling/renewing policis
141
141
  function isVerifying() external view returns (bool verifying) {
@@ -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,9 +4,12 @@ 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
 
11
+ function getInitialSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
12
+
10
13
  function setFees(
11
14
  Fee memory distributionFee
12
15
  ) external;
@@ -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
@@ -49,7 +49,7 @@ contract Product is BaseComponent, IProductComponent {
49
49
  Fee memory productFee,
50
50
  Fee memory processingFee,
51
51
  address initialOwner
52
- ) BaseComponent(registry, instanceNftid, zeroNftId(), token, PRODUCT(), isInterceptor, initialOwner) {
52
+ ) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
53
53
  // TODO add validation
54
54
  // TODO: reactivate when services are available again
55
55
  // _productService = _instance.getProductService();
@@ -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(
@@ -11,17 +11,21 @@ import {IPoolService} from "./service/IPoolService.sol";
11
11
  import {IProductService} from "./service/IProductService.sol";
12
12
  import {ISetup} from "./module/ISetup.sol";
13
13
  import {NftId} from "../types/NftId.sol";
14
+ import {StateId} from "../types/StateId.sol";
14
15
 
15
16
  interface IInstance is IERC165 {
16
17
 
17
18
  function getComponentOwnerService() external view returns (IComponentOwnerService);
18
- // TODO: renable these when we have the services
19
- // function getDistributionService() external view returns (IDistributionService);
19
+ function getDistributionService() external view returns (IDistributionService);
20
20
  // function getProductService() external view returns (IProductService);
21
21
  // function getPoolService() external view returns (IPoolService);
22
22
 
23
23
  function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external;
24
+
24
25
  function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external;
26
+ function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
27
+ function updateDistributionSetupState(NftId distributionNftId, StateId newState) external;
28
+
25
29
  function createPoolSetup(NftId distributionNftId, ISetup.PoolSetupInfo memory setup) external;
26
30
 
27
31
  function getInstanceReader() external view returns (InstanceReader);
@@ -1,17 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../contracts/types/NftId.sol";
5
- import {ObjectType} from "../../contracts/types/ObjectType.sol";
6
- import {RoleId} from "../../contracts/types/RoleId.sol";
7
- import {IService} from "../../contracts/instance/base/IService.sol";
8
- import {IRegistry} from "../../contracts/registry/IRegistry.sol";
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
9
 
10
- import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
11
- import {IBaseComponent} from "../../contracts/components/IBaseComponent.sol";
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";
12
16
 
13
17
  interface IInstanceService is IService {
14
18
 
15
-
19
+ event LogInstanceCloned(address clonedAccessManagerAddress, address clonedInstanceAddress, address clonedInstanceReaderAddress, NftId clonedInstanceNftId);
20
+
21
+ function createInstanceClone()
22
+ external
23
+ returns (
24
+ AccessManagerSimple clonedAccessManager,
25
+ Instance clonedInstance,
26
+ NftId instanceNftId,
27
+ InstanceReader clonedInstanceReader
28
+ );
16
29
  }
17
30
 
@@ -25,6 +25,7 @@ import {ERC165} from "../shared/ERC165.sol";
25
25
  import {Registerable} from "../shared/Registerable.sol";
26
26
  import {ComponentOwnerService} from "./service/ComponentOwnerService.sol";
27
27
  import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
28
+ import {IDistributionService} from "./service/IDistributionService.sol";
28
29
  import {VersionPart} from "../types/Version.sol";
29
30
 
30
31
  contract Instance is
@@ -41,6 +42,8 @@ contract Instance is
41
42
 
42
43
  uint32 public constant EXECUTION_DELAY = 0;
43
44
 
45
+ bool private _initialized;
46
+
44
47
  mapping(ShortString name => RoleId roleId) internal _role;
45
48
  mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
46
49
  RoleId [] internal _roles;
@@ -51,16 +54,23 @@ contract Instance is
51
54
  InstanceReader internal _instanceReader;
52
55
 
53
56
  constructor(address accessManagerAddress, address registryAddress, NftId registryNftId)
54
- AccessManagedSimple(accessManagerAddress)
55
57
  {
56
- // TODO move to initializer method and remove constructor - required for the instance to be cloneable
58
+ initialize(accessManagerAddress, registryAddress, registryNftId, msg.sender);
59
+ }
60
+
61
+ function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner) public {
62
+ require(!_initialized, "Contract instance has already been initialized");
63
+
64
+ initializeAccessManagedSimple(accessManagerAddress);
65
+
57
66
  _accessManager = AccessManagerSimple(accessManagerAddress);
58
67
  _createRole(RoleIdLib.toRoleId(ADMIN_ROLE), "AdminRole", false, false);
59
68
  _createRole(RoleIdLib.toRoleId(PUBLIC_ROLE), "PublicRole", false, false);
60
69
 
61
- _initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, msg.sender, "");
70
+ _initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
62
71
 
63
- _registerInterface(type(IInstance).interfaceId);
72
+ _registerInterface(type(IInstance).interfaceId);
73
+ _initialized = true;
64
74
  }
65
75
 
66
76
  //--- Role ------------------------------------------------------//
@@ -408,10 +418,9 @@ contract Instance is
408
418
  return ComponentOwnerService(_registry.getServiceAddress("ComponentOwnerService", VersionPart.wrap(3)));
409
419
  }
410
420
 
411
- // TODO reactivate when services are available
412
- // function getDistributionService() external view returns (IDistributionService) {
413
- // return DistributionService(_registry.getServiceAddress("DistributionService", VersionPart.wrap(3)));
414
- // }
421
+ function getDistributionService() external view returns (IDistributionService) {
422
+ return IDistributionService(_registry.getServiceAddress("DistributionService", VersionPart.wrap(3)));
423
+ }
415
424
 
416
425
  // TODO reactivate when services are available
417
426
  // function getProductService() external view returns (IProductService) {
@@ -424,9 +433,7 @@ contract Instance is
424
433
  // }
425
434
 
426
435
  function setInstanceReader(InstanceReader instanceReader) external restricted() {
427
- if (address(_instanceReader) != address(0)) {
428
- revert("InstanceReader is set");
429
- }
436
+ require(address(_instanceReader) == address(0), "InstanceReader is set");
430
437
  _instanceReader = instanceReader;
431
438
  }
432
439
 
@@ -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);
@@ -26,6 +26,7 @@ import {TimestampLib} from "../types/Timestamp.sol";
26
26
 
27
27
 
28
28
  contract InstanceReader {
29
+ bool private _initialized;
29
30
 
30
31
  IRegistry internal _registry;
31
32
  NftId internal _instanceNftId;
@@ -37,6 +38,12 @@ contract InstanceReader {
37
38
  NftId instanceNftId
38
39
  )
39
40
  {
41
+ initialize(registry, instanceNftId);
42
+ }
43
+
44
+ function initialize(address registry, NftId instanceNftId) public {
45
+ require(!_initialized, "ERROR:CRD-000:ALREADY_INITIALIZED");
46
+
40
47
  require(
41
48
  address(registry) != address(0),
42
49
  "ERROR:CRD-001:REGISTRY_ZERO");
@@ -55,8 +62,11 @@ contract InstanceReader {
55
62
 
56
63
  _instance = IInstance(instanceInfo.objectAddress);
57
64
  _store = IKeyValueStore(instanceInfo.objectAddress);
65
+
66
+ _initialized = true;
58
67
  }
59
68
 
69
+
60
70
  // module specific functions
61
71
 
62
72
  function getPolicyInfo(NftId policyNftId)