@etherisc/gif-next 0.0.2-f29e479-370 → 0.0.2-f30e0eb-805

Sign up to get free protection for your applications and to get access to all the features.
Files changed (250) hide show
  1. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  2. package/artifacts/contracts/components/Component.sol/Component.json +68 -89
  3. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.json +113 -140
  5. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.json +65 -73
  7. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +91 -122
  9. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +256 -189
  11. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +69 -145
  13. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  14. package/artifacts/contracts/components/Pool.sol/Pool.json +279 -245
  15. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  16. package/artifacts/contracts/components/Product.sol/Product.json +73 -162
  17. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +171 -308
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +98 -40
  27. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  28. package/artifacts/contracts/instance/Instance.sol/Instance.json +260 -379
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +448 -121
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +120 -227
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +148 -161
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +31 -23
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  39. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +1 -1
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  45. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  47. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +54 -71
  49. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  51. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  52. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  57. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +161 -62
  59. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +33 -25
  61. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +137 -140
  63. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +12 -12
  65. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +3 -3
  67. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
  69. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +505 -91
  71. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +78 -42
  73. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +110 -27
  75. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +93 -96
  77. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +350 -8
  80. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +21 -64
  82. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +81 -0
  84. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  86. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +58 -157
  87. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +19 -47
  89. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +114 -17
  91. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +17 -9
  93. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +7 -7
  95. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +4 -4
  97. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  99. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  101. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  102. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  103. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  104. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
  106. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  107. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  108. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  109. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +5 -5
  110. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +3 -3
  112. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +7 -7
  114. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  116. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  117. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  118. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  119. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  120. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  121. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  122. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  123. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  125. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  126. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  127. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  128. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  130. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +3 -3
  132. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  133. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  134. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  135. package/artifacts/contracts/shared/Service.sol/Service.json +1 -1
  136. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  137. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  138. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  139. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  140. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  141. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  142. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  143. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  144. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +3 -3
  145. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  147. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestService.sol/TestService.json +3 -3
  149. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  152. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  154. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  155. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  156. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  157. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  158. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  162. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/Fee.sol/FeeLib.json +2 -2
  164. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  165. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  166. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  168. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  169. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  170. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  173. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  176. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  178. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  180. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  182. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  184. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  186. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  188. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  190. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  192. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  194. package/contracts/components/Component.sol +95 -85
  195. package/contracts/components/Distribution.sol +12 -19
  196. package/contracts/components/IComponent.sol +37 -17
  197. package/contracts/components/IDistributionComponent.sol +1 -22
  198. package/contracts/components/IPoolComponent.sol +73 -47
  199. package/contracts/components/IProductComponent.sol +3 -2
  200. package/contracts/components/Pool.sol +171 -126
  201. package/contracts/components/Product.sol +26 -18
  202. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  203. package/contracts/instance/BundleManager.sol +7 -5
  204. package/contracts/instance/Cloneable.sol +7 -2
  205. package/contracts/instance/IInstance.sol +16 -10
  206. package/contracts/instance/IInstanceService.sol +18 -5
  207. package/contracts/instance/Instance.sol +45 -9
  208. package/contracts/instance/InstanceAccessManager.sol +382 -157
  209. package/contracts/instance/InstanceReader.sol +7 -10
  210. package/contracts/instance/InstanceService.sol +174 -155
  211. package/contracts/instance/ObjectManager.sol +6 -8
  212. package/contracts/instance/base/ComponentService.sol +5 -5
  213. package/contracts/instance/base/KeyValueStore.sol +5 -2
  214. package/contracts/instance/base/Lifecycle.sol +11 -2
  215. package/contracts/instance/module/IAccess.sol +20 -13
  216. package/contracts/instance/module/IBundle.sol +2 -1
  217. package/contracts/instance/module/IComponents.sol +35 -0
  218. package/contracts/instance/module/IDistribution.sol +2 -1
  219. package/contracts/instance/module/IPolicy.sol +26 -1
  220. package/contracts/instance/module/ISetup.sol +7 -22
  221. package/contracts/instance/service/ApplicationService.sol +123 -41
  222. package/contracts/instance/service/BundleService.sol +76 -38
  223. package/contracts/instance/service/DistributionService.sol +139 -47
  224. package/contracts/instance/service/IApplicationService.sol +7 -7
  225. package/contracts/instance/service/IBundleService.sol +19 -11
  226. package/contracts/instance/service/IDistributionService.sol +19 -4
  227. package/contracts/instance/service/IPolicyService.sol +3 -20
  228. package/contracts/instance/service/IPoolService.sol +17 -2
  229. package/contracts/instance/service/PolicyService.sol +59 -132
  230. package/contracts/instance/service/PoolService.sol +128 -17
  231. package/contracts/instance/service/ProductService.sol +10 -2
  232. package/contracts/registry/ChainNft.sol +8 -0
  233. package/contracts/registry/IRegistry.sol +2 -0
  234. package/contracts/registry/ITransferInterceptor.sol +1 -0
  235. package/contracts/registry/Registry.sol +23 -20
  236. package/contracts/registry/RegistryService.sol +5 -5
  237. package/contracts/shared/Registerable.sol +2 -2
  238. package/contracts/shared/TokenHandler.sol +11 -5
  239. package/contracts/types/Blocknumber.sol +1 -0
  240. package/contracts/types/Fee.sol +1 -0
  241. package/contracts/types/NftId.sol +8 -0
  242. package/contracts/types/ObjectType.sol +1 -0
  243. package/contracts/types/Referral.sol +4 -0
  244. package/contracts/types/RoleId.sol +13 -6
  245. package/contracts/types/Seconds.sol +54 -0
  246. package/contracts/types/StateId.sol +1 -0
  247. package/contracts/types/Timestamp.sol +13 -13
  248. package/contracts/types/UFixed.sol +1 -0
  249. package/contracts/types/Version.sol +1 -0
  250. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/359f7e46bc71a5341d1c43865ca79553.json"
3
+ "buildInfo": "../../../build-info/95371df5f28c49f1193e96df62dcfc87.json"
4
4
  }
@@ -42,8 +42,8 @@
42
42
  "type": "function"
43
43
  }
44
44
  ],
45
- "bytecode": "0x60fb610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638e4ad86c146042578063ac43d834146067575b600080fd5b6050604d3660046085565b90565b60405160ff90911681526020015b60405180910390f35b60786072366004609d565b60ff1690565b604051908152602001605e565b600060208284031215609657600080fd5b5035919050565b60006020828403121560ae57600080fd5b813560ff8116811460be57600080fd5b939250505056fea264697066735822122074bb6f75f2cab9692d05e41844bf40283045a9440c662c37a97b2502d38207ed64736f6c63430008140033",
46
- "deployedBytecode": "0x7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638e4ad86c146042578063ac43d834146067575b600080fd5b6050604d3660046085565b90565b60405160ff90911681526020015b60405180910390f35b60786072366004609d565b60ff1690565b604051908152602001605e565b600060208284031215609657600080fd5b5035919050565b60006020828403121560ae57600080fd5b813560ff8116811460be57600080fd5b939250505056fea264697066735822122074bb6f75f2cab9692d05e41844bf40283045a9440c662c37a97b2502d38207ed64736f6c63430008140033",
45
+ "bytecode": "0x60fb610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638e4ad86c146042578063ac43d834146067575b600080fd5b6050604d3660046085565b90565b60405160ff90911681526020015b60405180910390f35b60786072366004609d565b60ff1690565b604051908152602001605e565b600060208284031215609657600080fd5b5035919050565b60006020828403121560ae57600080fd5b813560ff8116811460be57600080fd5b939250505056fea2646970667358221220cdee50fe6c9714f8463d3a3d707ceac1b02f5c17b070c998ecfbac805f95cace64736f6c63430008140033",
46
+ "deployedBytecode": "0x7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638e4ad86c146042578063ac43d834146067575b600080fd5b6050604d3660046085565b90565b60405160ff90911681526020015b60405180910390f35b60786072366004609d565b60ff1690565b604051908152602001605e565b600060208284031215609657600080fd5b5035919050565b60006020828403121560ae57600080fd5b813560ff8116811460be57600080fd5b939250505056fea2646970667358221220cdee50fe6c9714f8463d3a3d707ceac1b02f5c17b070c998ecfbac805f95cace64736f6c63430008140033",
47
47
  "linkReferences": {},
48
48
  "deployedLinkReferences": {}
49
49
  }
@@ -6,6 +6,7 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
6
6
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
7
7
 
8
8
  import {IComponent} from "./IComponent.sol";
9
+ import {IComponents} from "../instance/module/IComponents.sol";
9
10
  import {IProductService} from "../instance/service/IProductService.sol";
10
11
  import {IInstanceService} from "../instance/IInstanceService.sol";
11
12
  import {IInstance} from "../instance/IInstance.sol";
@@ -29,21 +30,23 @@ abstract contract Component is
29
30
  AccessManagedUpgradeable
30
31
  {
31
32
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
32
- bytes32 public constant CONTRACT_LOCATION_V1 = 0xffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00;
33
+ bytes32 public constant COMPONENT_LOCATION_V1 = 0xffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00;
33
34
 
34
35
  struct ComponentStorage {
35
- IInstance _instance; // instance for this component
36
- InstanceReader _instanceReader; // instance reader for this component
37
36
  string _name; // unique (per instance) component name
38
37
  IERC20Metadata _token; // token for this component
38
+ IInstance _instance; // instance for this component
39
39
  address _wallet; // wallet for this component (default = component contract itself)
40
+ InstanceReader _instanceReader; // instance reader for this component
40
41
  bool _isNftInterceptor; // declares if component is involved in nft transfers
41
- IInstanceService _instanceService; // instance service for this component
42
-
43
42
  NftId _productNftId; // only relevant for components that are linked to a aproduct
44
- IProductService _productService; // product service for component, might not be relevant for some component types (eg oracles)
45
43
  }
46
44
 
45
+ function _getComponentStorage() private pure returns (ComponentStorage storage $) {
46
+ assembly {
47
+ $.slot := COMPONENT_LOCATION_V1
48
+ }
49
+ }
47
50
 
48
51
  modifier onlyChainNft() {
49
52
  if(msg.sender != getRegistry().getChainNftAddress()) {
@@ -52,20 +55,6 @@ abstract contract Component is
52
55
  _;
53
56
  }
54
57
 
55
-
56
- modifier onlyProductService() {
57
- if(msg.sender != address(_getComponentStorage()._productService)) {
58
- revert ErrorComponentNotProductService(msg.sender);
59
- }
60
- _;
61
- }
62
-
63
- function _getComponentStorage() private pure returns (ComponentStorage storage $) {
64
- assembly {
65
- $.slot := CONTRACT_LOCATION_V1
66
- }
67
- }
68
-
69
58
  function initializeComponent(
70
59
  address registry,
71
60
  NftId instanceNftId,
@@ -74,77 +63,44 @@ abstract contract Component is
74
63
  ObjectType componentType,
75
64
  bool isInterceptor,
76
65
  address initialOwner,
77
- bytes memory data
66
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
78
67
  )
79
68
  public
80
69
  virtual
81
70
  onlyInitializing()
82
71
  {
83
- ComponentStorage storage $ = _getComponentStorage();
84
- initializeRegisterable(registry, instanceNftId, componentType, isInterceptor, initialOwner, data);
85
-
86
- // set unique name of component
87
- $._name = name;
88
- $._isNftInterceptor = isInterceptor;
72
+ initializeRegisterable(registry, instanceNftId, componentType, isInterceptor, initialOwner, registryData);
89
73
 
90
74
  // set and check linked instance
91
- IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
92
- $._instance = IInstance(instanceInfo.objectAddress);
75
+ ComponentStorage storage $ = _getComponentStorage();
76
+ $._instance = IInstance(
77
+ getRegistry().getObjectInfo(instanceNftId).objectAddress);
78
+
93
79
  if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
94
- revert ErrorComponentNotInstance(instanceNftId, instanceInfo.objectAddress);
80
+ revert ErrorComponentNotInstance(instanceNftId);
95
81
  }
96
82
 
97
83
  // initialize AccessManagedUpgradeable
98
84
  __AccessManaged_init($._instance.authority());
99
85
 
100
- // set linked services
101
- VersionPart gifVersion = $._instance.getMajorVersion();
102
- $._instanceService = IInstanceService(getRegistry().getServiceAddress(INSTANCE(), gifVersion));
86
+ // set component state
87
+ $._name = name;
88
+ $._isNftInterceptor = isInterceptor;
103
89
  $._instanceReader = $._instance.getInstanceReader();
104
- $._productService = IProductService(getRegistry().getServiceAddress(PRODUCT(), gifVersion));
105
-
106
- // set wallet and token
107
90
  $._wallet = address(this);
108
91
  $._token = IERC20Metadata(token);
109
92
 
110
93
  registerInterface(type(IComponent).interfaceId);
111
94
  }
112
95
 
113
- /// @dev callback function for nft transfers. may only be called by chain nft contract.
114
- /// default implementation is empty. overriding functions MUST add onlyChainNft modifier
115
- function nftTransferFrom(address from, address to, uint256 tokenId)
116
- external
117
- virtual override
118
- onlyChainNft()
119
- { }
120
-
121
96
  function lock() external onlyOwner override {
122
- _getComponentStorage()._instanceService.setTargetLocked(getName(), true);
97
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
123
98
  }
124
99
 
125
100
  function unlock() external onlyOwner override {
126
- _getComponentStorage()._instanceService.setTargetLocked(getName(), false);
101
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
127
102
  }
128
103
 
129
- // only product service may set product nft id during registration of product setup
130
- function setProductNftId(NftId productNftId)
131
- external
132
- override
133
- onlyProductService()
134
- {
135
- ComponentStorage storage $ = _getComponentStorage();
136
-
137
- if($._productNftId.gtz()) {
138
- revert ErrorComponentProductNftAlreadySet();
139
- }
140
-
141
- $._productNftId = productNftId;
142
- }
143
-
144
- /// @dev Sets the wallet address for the component.
145
- /// if the current wallet has tokens, these will be transferred.
146
- /// if the new wallet address is externally owned, an approval from the
147
- /// owner of the external wallet for the component to move all tokens must exist.
148
104
  function setWallet(address newWallet)
149
105
  external
150
106
  override
@@ -159,8 +115,9 @@ abstract contract Component is
159
115
  if (newWallet == address(0)) {
160
116
  revert ErrorComponentWalletAddressZero();
161
117
  }
118
+
162
119
  if (newWallet == currentWallet) {
163
- revert ErrorComponentWalletAddressIsSameAsCurrent(newWallet);
120
+ revert ErrorComponentWalletAddressIsSameAsCurrent();
164
121
  }
165
122
 
166
123
  if (currentBalance > 0) {
@@ -177,7 +134,7 @@ abstract contract Component is
177
134
 
178
135
  // effects
179
136
  $._wallet = newWallet;
180
- emit LogComponentWalletAddressChanged(newWallet);
137
+ emit LogComponentWalletAddressChanged(currentWallet, newWallet);
181
138
 
182
139
  // interactions
183
140
  if (currentBalance > 0) {
@@ -192,11 +149,44 @@ abstract contract Component is
192
149
  }
193
150
  }
194
151
 
195
- function getWallet()
196
- public
197
- view
152
+ function setProductNftId(NftId productNftId)
153
+ external
198
154
  override
199
- returns (address walletAddress)
155
+ {
156
+ ComponentStorage storage $ = _getComponentStorage();
157
+
158
+ // verify caller is product service
159
+ if(msg.sender != _getServiceAddress(PRODUCT())) {
160
+ revert ErrorComponentNotProductService(msg.sender);
161
+ }
162
+
163
+ // verify component is not yet linked to a product
164
+ if($._productNftId.gtz()) {
165
+ revert ErrorComponentProductNftAlreadySet();
166
+ }
167
+
168
+ $._productNftId = productNftId;
169
+ }
170
+
171
+ function nftMint(address to, uint256 tokenId)
172
+ external
173
+ virtual
174
+ onlyChainNft
175
+ {}
176
+
177
+ /// @dev callback function for nft transfers
178
+ /// may only be called by chain nft contract.
179
+ /// do not override this function to implement business logic for handling transfers
180
+ /// override internal function _nftTransferFrom instead
181
+ function nftTransferFrom(address from, address to, uint256 tokenId)
182
+ external
183
+ virtual
184
+ onlyChainNft
185
+ {
186
+ _nftTransferFrom(from, to, tokenId);
187
+ }
188
+
189
+ function getWallet() public view override returns (address walletAddress)
200
190
  {
201
191
  return _getComponentStorage()._wallet;
202
192
  }
@@ -213,15 +203,6 @@ abstract contract Component is
213
203
  return _getComponentStorage()._instance;
214
204
  }
215
205
 
216
- function getInstanceReader() public view returns (InstanceReader reader) {
217
- return _getComponentStorage()._instanceReader;
218
- }
219
-
220
- function getServiceAddress(ObjectType domain) public view returns (address service) {
221
- VersionPart majorVersion = getInstance().getMajorVersion();
222
- return getRegistry().getServiceAddress(domain, majorVersion);
223
- }
224
-
225
206
  function getName() public view override returns(string memory name) {
226
207
  return _getComponentStorage()._name;
227
208
  }
@@ -230,12 +211,41 @@ abstract contract Component is
230
211
  return _getComponentStorage()._productNftId;
231
212
  }
232
213
 
233
- function getInstanceService() public view returns (IInstanceService) {
234
- return _getComponentStorage()._instanceService;
214
+ function getComponentInfo() public view returns (IComponents.ComponentInfo memory info) {
215
+ info = _getInstanceReader().getComponentInfo(getNftId());
216
+
217
+ // fallback to initial info (wallet is always != address(0))
218
+ if(info.wallet == address(0)) {
219
+ info = _getInitialInfo();
220
+ }
235
221
  }
236
222
 
237
- function getProductService() public view returns (IProductService) {
238
- return _getComponentStorage()._productService;
223
+ /// @dev defines initial component specification
224
+ /// overwrite this function according to your use case
225
+ function _getInitialInfo()
226
+ internal
227
+ view
228
+ virtual
229
+ returns (IComponents.ComponentInfo memory info)
230
+ { }
231
+
232
+
233
+ /// @dev internal function for nft transfers.
234
+ /// handling logic that deals with nft transfers need to overwrite this function
235
+ function _nftTransferFrom(address from, address to, uint256 tokenId)
236
+ internal
237
+ virtual
238
+ { }
239
+
240
+ /// @dev returns reader for linked instance
241
+ function _getInstanceReader() internal view returns (InstanceReader reader) {
242
+ return _getComponentStorage()._instanceReader;
239
243
  }
240
244
 
241
- }
245
+ /// @dev returns the service address for the specified domain
246
+ /// gets address via lookup from registry using the major version form the linked instance
247
+ function _getServiceAddress(ObjectType domain) internal view returns (address service) {
248
+ VersionPart majorVersion = _getComponentStorage()._instance.getMajorVersion();
249
+ return getRegistry().getServiceAddress(domain, majorVersion);
250
+ }
251
+ }
@@ -30,6 +30,7 @@ abstract contract Distribution is
30
30
  bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
31
31
 
32
32
  struct DistributionStorage {
33
+ Fee _minDistributionOwnerFee;
33
34
  Fee _distributionFee;
34
35
  TokenHandler _tokenHandler;
35
36
  IDistributionService _distributionService;
@@ -41,18 +42,20 @@ abstract contract Distribution is
41
42
  NftId instanceNftId,
42
43
  string memory name,
43
44
  address token,
45
+ Fee memory minDistributionOwnerFee,
44
46
  Fee memory distributionFee,
45
47
  address initialOwner,
46
- bytes memory data
48
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
47
49
  )
48
50
  public
49
51
  virtual
50
52
  onlyInitializing()
51
53
  {
52
- initializeComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, data);
54
+ initializeComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData);
53
55
 
54
56
  DistributionStorage storage $ = _getDistributionStorage();
55
57
  // TODO add validation
58
+ $._minDistributionOwnerFee = minDistributionOwnerFee;
56
59
  $._distributionFee = distributionFee;
57
60
  $._tokenHandler = new TokenHandler(token);
58
61
  $._distributionService = getInstance().getDistributionService();
@@ -61,6 +64,7 @@ abstract contract Distribution is
61
64
  }
62
65
 
63
66
  function setFees(
67
+ Fee memory minDistributionOwnerFee,
64
68
  Fee memory distributionFee
65
69
  )
66
70
  external
@@ -68,7 +72,7 @@ abstract contract Distribution is
68
72
  onlyOwner
69
73
  restricted()
70
74
  {
71
- _getDistributionStorage()._distributionService.setFees(distributionFee);
75
+ _getDistributionStorage()._distributionService.setFees(minDistributionOwnerFee, distributionFee);
72
76
  }
73
77
 
74
78
  function getDistributionFee() external view returns (Fee memory distributionFee) {
@@ -190,7 +194,7 @@ abstract contract Distribution is
190
194
  )
191
195
  {
192
196
  ReferralId referralId = getReferralId(referralCode);
193
- return getInstanceReader().getDiscountPercentage(referralId);
197
+ return _getInstanceReader().getDiscountPercentage(referralId);
194
198
  }
195
199
 
196
200
 
@@ -219,19 +223,6 @@ abstract contract Distribution is
219
223
  return 0 * netPremiumAmount;
220
224
  }
221
225
 
222
- function processSale(
223
- ReferralId referralId,
224
- uint256 premiumAmount
225
- )
226
- external
227
- onlyOwner
228
- restricted()
229
- virtual override
230
- {
231
- DistributionStorage storage $ = _getDistributionStorage();
232
- $._distributionService.processSale(referralId, premiumAmount);
233
- }
234
-
235
226
  function processRenewal(
236
227
  ReferralId referralId,
237
228
  uint256 feeAmount
@@ -259,13 +250,15 @@ abstract contract Distribution is
259
250
  return ISetup.DistributionSetupInfo(
260
251
  zeroNftId(),
261
252
  $._tokenHandler,
253
+ $._minDistributionOwnerFee,
262
254
  $._distributionFee,
263
- address(this)
255
+ address(this),
256
+ 0
264
257
  );
265
258
  }
266
259
 
267
260
 
268
- function nftTransferFrom(address from, address to, uint256 tokenId) external virtual override (Component, ITransferInterceptor) {
261
+ function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
269
262
  // keep track of distributor nft owner
270
263
  emit LogDistributorUpdated(to, msg.sender);
271
264
  DistributionStorage storage $ = _getDistributionStorage();
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
+ import {IComponents} from "../instance/module/IComponents.sol";
6
7
  import {IInstance} from "../instance/IInstance.sol";
7
8
  import {IInstanceService} from "../instance/IInstanceService.sol";
8
9
  import {IProductService} from "../instance/service/IProductService.sol";
@@ -11,44 +12,63 @@ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
11
12
  import {NftId} from "../types/NftId.sol";
12
13
  import {ObjectType} from "../types/ObjectType.sol";
13
14
 
15
+ /// @dev component base class
16
+ /// component examples are product, distribution, pool and oracle
14
17
  interface IComponent is
15
18
  IRegisterable,
16
19
  ITransferInterceptor
17
20
  {
18
-
19
21
  error ErrorComponentNotChainNft(address caller);
20
22
  error ErrorComponentNotProductService(address caller);
21
- error ErrorComponentNotInstance(NftId instanceNftId, address instance);
23
+ error ErrorComponentNotInstance(NftId instanceNftId);
22
24
  error ErrorComponentProductNftAlreadySet();
25
+
23
26
  error ErrorComponentWalletAddressZero();
24
- error ErrorComponentWalletAddressIsSameAsCurrent(address newWallet);
27
+ error ErrorComponentWalletAddressIsSameAsCurrent();
25
28
  error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
26
- error ErrorComponentUnauthorized(address caller, uint64 requiredRoleIdNum);
27
29
 
28
- event LogComponentWalletAddressChanged(address newWallet);
30
+ event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
29
31
  event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
30
32
 
31
- function getName() external view returns (string memory name);
32
-
33
+ /// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
34
+ /// only component owner (nft holder) is authorizes to call this function
33
35
  function lock() external;
34
- function unlock() external;
35
36
 
36
- function getToken() external view returns (IERC20Metadata token);
37
+ /// @dev unlocks component to (re-)enable functions that may change state related to this component
38
+ /// only component owner (nft holder) is authorizes to call this function
39
+ function unlock() external;
37
40
 
41
+ /// @dev sets the wallet address for the component
42
+ /// if the current wallet has tokens, these will be transferred
43
+ /// if the new wallet address is externally owned, an approval from the
44
+ /// owner of the external wallet for the component to move all tokens must exist
38
45
  function setWallet(address walletAddress) external;
39
- function getWallet() external view returns (address walletAddress);
40
46
 
41
- function isNftInterceptor() external view returns(bool isInterceptor);
47
+ /// @dev only product service may set product nft id during registration of product setup
48
+ function setProductNftId(NftId productNftId) external;
49
+
50
+ /// @dev returns the name of this component
51
+ /// to successfully register the component with an instance the name MUST be unique in the linked instance
52
+ function getName() external view returns (string memory name);
53
+
54
+ /// @dev defines which ERC20 token is used by this component
55
+ function getToken() external view returns (IERC20Metadata token);
42
56
 
57
+ /// @dev defines the instance to which this component is linked to
43
58
  function getInstance() external view returns (IInstance instance);
44
59
 
45
- /// @dev returns the service address for the specified domain
46
- /// gets address via lookup from registry using the major version form the linked instance
47
- function getServiceAddress(ObjectType domain) external view returns (address service);
60
+ /// @dev defines the wallet address used to hold the ERC20 tokens related to this component
61
+ /// the default address is the component token address
62
+ function getWallet() external view returns (address walletAddress);
48
63
 
49
- function setProductNftId(NftId productNftId) external;
64
+ /// @dev defines the product to which this component is linked to
65
+ /// this is only relevant for pool and distribution components
50
66
  function getProductNftId() external view returns (NftId productNftId);
51
67
 
52
- function getInstanceService() external view returns (IInstanceService);
53
- function getProductService() external view returns (IProductService);
68
+ function isNftInterceptor() external view returns(bool isInterceptor);
69
+
70
+ /// @dev returns component infos for this pool
71
+ /// when registered with an instance the info is obtained from the data stored in the instance
72
+ /// when not registered the function returns the info from the component contract
73
+ function getComponentInfo() external view returns (IComponents.ComponentInfo memory info);
54
74
  }
@@ -17,6 +17,7 @@ interface IDistributionComponent is IComponent {
17
17
  function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
18
18
 
19
19
  function setFees(
20
+ Fee memory minDistributionOwnerFee,
20
21
  Fee memory distributionFee
21
22
  ) external;
22
23
 
@@ -44,33 +45,11 @@ interface IDistributionComponent is IComponent {
44
45
  bytes memory data
45
46
  ) external;
46
47
 
47
- /**
48
- * @dev lets distributors create referral codes.
49
- * referral codes need to be unique
50
- * distributor is identified via msg.sender.
51
- */
52
- function createReferral(
53
- NftId distributorNftId,
54
- string memory code,
55
- UFixed discountPercentage,
56
- uint32 maxReferrals,
57
- Timestamp expiryAt,
58
- bytes memory data
59
- ) external returns (ReferralId referralId);
60
-
61
48
  function calculateRenewalFeeAmount(
62
49
  ReferralId referralId,
63
50
  uint256 netPremiumAmount
64
51
  ) external view returns (uint256 feeAmount);
65
52
 
66
- /// @dev callback from product service when selling a policy for a specific referralId
67
- /// the used referral id and the collected fee are provided as parameters
68
- /// the component implementation can then process this information accordingly
69
- function processSale(
70
- ReferralId referralId,
71
- uint256 feeAmount
72
- ) external;
73
-
74
53
  /// @dev callback from product service when a policy is renews for a specific referralId
75
54
  function processRenewal(
76
55
  ReferralId referralId,