@etherisc/gif-next 0.0.2-de0a1d3-009 → 0.0.2-def25d4-556

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 (384) hide show
  1. package/README.md +148 -26
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +176 -23
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +308 -43
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +129 -23
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +36 -172
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -238
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -213
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +308 -96
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +409 -78
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  45. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  46. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  47. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
  48. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  49. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +180 -1784
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +2243 -1199
  56. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  58. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1283 -0
  60. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +851 -0
  62. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +472 -0
  64. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +149 -50
  66. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +1 -1
  68. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  70. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  73. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  76. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  77. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  78. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  79. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  80. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  81. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  82. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  83. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  84. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  85. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  86. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  87. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  88. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  89. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +295 -86
  91. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +210 -60
  93. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  94. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +436 -0
  95. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +123 -62
  97. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +120 -40
  99. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +120 -40
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +120 -40
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -37
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +853 -0
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +597 -122
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1237 -0
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +525 -0
  117. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  119. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  120. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  122. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  123. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  124. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
  125. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  127. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/IService.sol/IService.json} +116 -82
  129. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
  131. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  132. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  137. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  138. package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +174 -73
  139. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +151 -146
  141. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  142. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  143. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  144. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  145. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +4 -27
  147. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  153. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestService.sol/TestService.json +203 -69
  155. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  157. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  159. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +29 -36
  161. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  162. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  163. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  164. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  167. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  168. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  170. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  171. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  172. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  174. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  175. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  176. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  177. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  178. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  180. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  182. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  184. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  186. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  188. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  190. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  192. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  194. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  196. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  198. package/contracts/components/BaseComponent.sol +26 -29
  199. package/contracts/components/Distribution.sol +52 -18
  200. package/contracts/components/IBaseComponent.sol +9 -3
  201. package/contracts/components/IDistributionComponent.sol +5 -6
  202. package/contracts/components/IPoolComponent.sol +2 -11
  203. package/contracts/components/IProductComponent.sol +4 -7
  204. package/contracts/components/Pool.sol +99 -76
  205. package/contracts/components/Product.sol +111 -41
  206. package/contracts/experiment/cloning/Cloner.sol +47 -0
  207. package/contracts/instance/AccessManagedSimple.sol +115 -0
  208. package/contracts/instance/AccessManagerSimple.sol +692 -0
  209. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  210. package/contracts/instance/IInstance.sol +24 -45
  211. package/contracts/instance/IInstanceService.sol +30 -0
  212. package/contracts/instance/Instance.sol +427 -58
  213. package/contracts/instance/InstanceAccessManager.sol +288 -0
  214. package/contracts/instance/InstanceReader.sol +290 -0
  215. package/contracts/instance/InstanceService.sol +170 -0
  216. package/contracts/instance/InstanceServiceManager.sol +56 -0
  217. package/contracts/instance/base/ComponentServiceBase.sol +12 -13
  218. package/contracts/instance/base/IInstanceBase.sol +3 -2
  219. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  220. package/contracts/instance/base/ILifecycle.sol +3 -3
  221. package/contracts/instance/base/KeyValueStore.sol +49 -38
  222. package/contracts/instance/base/Lifecycle.sol +1 -1
  223. package/contracts/instance/module/IAccess.sol +38 -0
  224. package/contracts/instance/module/IBundle.sol +19 -0
  225. package/contracts/instance/module/IDistribution.sol +39 -0
  226. package/contracts/instance/module/IPolicy.sol +45 -0
  227. package/contracts/instance/module/IRisk.sol +11 -0
  228. package/contracts/instance/module/ISetup.sol +43 -0
  229. package/contracts/instance/module/ITreasury.sol +23 -0
  230. package/contracts/instance/service/ComponentOwnerService.sol +232 -72
  231. package/contracts/instance/service/DistributionService.sol +66 -20
  232. package/contracts/instance/service/DistributionServiceManager.sol +53 -0
  233. package/contracts/instance/service/IComponentOwnerService.sol +1 -3
  234. package/contracts/instance/service/IDistributionService.sol +1 -1
  235. package/contracts/instance/service/IPoolService.sol +1 -1
  236. package/contracts/instance/service/IProductService.sol +3 -3
  237. package/contracts/registry/ChainNft.sol +80 -37
  238. package/contracts/registry/IRegistry.sol +62 -25
  239. package/contracts/registry/IRegistryService.sol +33 -0
  240. package/contracts/registry/ITransferInterceptor.sol +6 -0
  241. package/contracts/registry/Registry.sol +374 -266
  242. package/contracts/registry/RegistryService.sol +399 -0
  243. package/contracts/registry/RegistryServiceManager.sol +80 -0
  244. package/contracts/registry/TokenRegistry.sol +111 -0
  245. package/contracts/shared/ContractDeployerLib.sol +72 -0
  246. package/contracts/shared/ERC165.sol +6 -2
  247. package/contracts/shared/INftOwnable.sol +22 -0
  248. package/contracts/shared/IRegisterable.sol +8 -15
  249. package/contracts/{instance/base → shared}/IService.sol +3 -3
  250. package/contracts/shared/IVersionable.sol +40 -9
  251. package/contracts/shared/NftOwnable.sol +136 -0
  252. package/contracts/shared/ProxyManager.sol +94 -0
  253. package/contracts/shared/Registerable.sol +63 -59
  254. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  255. package/contracts/shared/Service.sol +54 -0
  256. package/contracts/shared/TokenHandler.sol +27 -0
  257. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  258. package/contracts/shared/Versionable.sol +110 -62
  259. package/contracts/test/TestFee.sol +2 -2
  260. package/contracts/test/TestRegisterable.sol +5 -6
  261. package/contracts/test/TestRoleId.sol +1 -1
  262. package/contracts/test/TestService.sol +5 -13
  263. package/contracts/types/DistributorType.sol +55 -0
  264. package/contracts/types/Fee.sol +3 -3
  265. package/contracts/types/Key32.sol +8 -3
  266. package/contracts/types/NumberId.sol +52 -0
  267. package/contracts/types/ObjectType.sol +35 -14
  268. package/contracts/types/Referral.sol +85 -0
  269. package/contracts/types/RoleId.sol +59 -9
  270. package/contracts/types/StateId.sol +5 -1
  271. package/contracts/types/Timestamp.sol +7 -3
  272. package/contracts/types/UFixed.sol +128 -12
  273. package/contracts/types/Version.sol +5 -1
  274. package/package.json +4 -3
  275. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  276. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  277. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  278. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  279. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  280. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  281. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  282. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  283. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  284. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  285. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  286. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  287. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  288. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  289. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  290. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  291. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  292. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  293. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  294. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  295. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  296. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  297. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  298. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  299. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  300. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  301. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  302. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  303. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  304. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  305. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  306. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  307. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  308. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  309. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  310. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  311. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  312. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  313. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  314. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  315. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  316. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  317. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  318. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  319. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  320. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  321. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  322. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  323. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  324. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  325. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  326. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -630
  327. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  328. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -945
  329. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  330. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  331. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  332. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  333. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  334. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -724
  335. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  336. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  337. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +0 -4
  338. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +0 -248
  339. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  340. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  341. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -228
  342. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  343. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  344. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  345. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  346. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  347. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  348. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  349. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  350. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  351. package/contracts/experiment/statemachine/README.md +0 -112
  352. package/contracts/instance/IInstanceLinked.sol +0 -8
  353. package/contracts/instance/base/InstanceBase.sol +0 -91
  354. package/contracts/instance/base/ModuleBase.sol +0 -57
  355. package/contracts/instance/base/ServiceBase.sol +0 -37
  356. package/contracts/instance/module/access/Access.sol +0 -149
  357. package/contracts/instance/module/access/IAccess.sol +0 -53
  358. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  359. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  360. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  361. package/contracts/instance/module/component/IComponent.sol +0 -28
  362. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  363. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  364. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  365. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  366. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  367. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  368. package/contracts/instance/module/risk/IRisk.sol +0 -26
  369. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  370. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  371. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  372. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  373. package/contracts/instance/service/PoolService.sol +0 -149
  374. package/contracts/instance/service/ProductService.sol +0 -509
  375. package/contracts/registry/IChainNft.sol +0 -21
  376. package/contracts/registry/IRegistryLinked.sol +0 -8
  377. package/contracts/registry/RegistryUpgradeable.sol +0 -473
  378. package/contracts/shared/IOwnable.sol +0 -6
  379. package/contracts/shared/Proxy.sol +0 -94
  380. package/contracts/shared/VersionableUpgradeable.sol +0 -133
  381. package/contracts/test/TestDistribution.sol +0 -21
  382. package/contracts/test/TestPool.sol +0 -25
  383. package/contracts/test/TestProduct.sol +0 -72
  384. package/contracts/types/ReferralId.sol +0 -48
@@ -170,8 +170,8 @@
170
170
  "type": "function"
171
171
  }
172
172
  ],
173
- "bytecode": "0x61039161003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c80638e4ad86c116100655780638e4ad86c1461012157806394aa449c14610144578063a123b37c14610152578063c9e66e291461017957600080fd5b806304b8f6c5146100975780632efe0113146100b357806349a7111a146100c657806355601007146100fd575b600080fd5b60005b60405162ffffff90911681526020015b60405180910390f35b61009a6100c136600461026e565b610190565b6100d96100d436600461029a565b610231565b6040805160ff948516815292841660208401529216918101919091526060016100aa565b61011361010b36600461029a565b62ffffff1690565b6040519081526020016100aa565b61013261012f3660046102c6565b90565b60405160ff90911681526020016100aa565b61009a61012f3660046102df565b61016061010b36600461029a565b60405167ffffffffffffffff90911681526020016100aa565b61013261018736600461029a565b60101c60ff1690565b6000610100841080156101a4575061010083105b80156101b1575061010082105b61020c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5652532d3031303a56455253494f4e5f504152545f544f4f5f42604482015261494760f01b606482015260840160405180910390fd5b8161021f600885901b601087901b61031f565b610229919061031f565b949350505050565b600080808360ff601082901c166102488383610338565b915061ffff600883901c16600061025f8185610338565b92989197509195509350505050565b60008060006060848603121561028357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156102ac57600080fd5b813562ffffff811681146102bf57600080fd5b9392505050565b6000602082840312156102d857600080fd5b5035919050565b6000602082840312156102f157600080fd5b813567ffffffffffffffff811681146102bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561033257610332610309565b92915050565b62ffffff82811682821603908082111561035457610354610309565b509291505056fea26469706673582212208f9511a0a2a546b8c04a7a10d6336736c2c01718b45d7da4362c9eb1545731ca64736f6c63430008140033",
174
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100925760003560e01c80638e4ad86c116100655780638e4ad86c1461012157806394aa449c14610144578063a123b37c14610152578063c9e66e291461017957600080fd5b806304b8f6c5146100975780632efe0113146100b357806349a7111a146100c657806355601007146100fd575b600080fd5b60005b60405162ffffff90911681526020015b60405180910390f35b61009a6100c136600461026e565b610190565b6100d96100d436600461029a565b610231565b6040805160ff948516815292841660208401529216918101919091526060016100aa565b61011361010b36600461029a565b62ffffff1690565b6040519081526020016100aa565b61013261012f3660046102c6565b90565b60405160ff90911681526020016100aa565b61009a61012f3660046102df565b61016061010b36600461029a565b60405167ffffffffffffffff90911681526020016100aa565b61013261018736600461029a565b60101c60ff1690565b6000610100841080156101a4575061010083105b80156101b1575061010082105b61020c5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5652532d3031303a56455253494f4e5f504152545f544f4f5f42604482015261494760f01b606482015260840160405180910390fd5b8161021f600885901b601087901b61031f565b610229919061031f565b949350505050565b600080808360ff601082901c166102488383610338565b915061ffff600883901c16600061025f8185610338565b92989197509195509350505050565b60008060006060848603121561028357600080fd5b505081359360208301359350604090920135919050565b6000602082840312156102ac57600080fd5b813562ffffff811681146102bf57600080fd5b9392505050565b6000602082840312156102d857600080fd5b5035919050565b6000602082840312156102f157600080fd5b813567ffffffffffffffff811681146102bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561033257610332610309565b92915050565b62ffffff82811682821603908082111561035457610354610309565b509291505056fea26469706673582212208f9511a0a2a546b8c04a7a10d6336736c2c01718b45d7da4362c9eb1545731ca64736f6c63430008140033",
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/ddc9b0b487d1eff0b437a694ef8bc6d1.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": "0x60b9610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063ac43d834146038575b600080fd5b60496043366004605b565b60ff1690565b60405190815260200160405180910390f35b600060208284031215606c57600080fd5b813560ff81168114607c57600080fd5b939250505056fea2646970667358221220c9c379b3b5ac83b5051ce617e894b84028046aca89e19f78215b3a3e8442fad464736f6c63430008140033",
27
- "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063ac43d834146038575b600080fd5b60496043366004605b565b60ff1690565b60405190815260200160405180910390f35b600060208284031215606c57600080fd5b813560ff81168114607c57600080fd5b939250505056fea2646970667358221220c9c379b3b5ac83b5051ce617e894b84028046aca89e19f78215b3a3e8442fad464736f6c63430008140033",
45
+ "bytecode": "0x60fb610039600b82828239805160001a60731461002c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638e4ad86c146042578063ac43d834146067575b600080fd5b6050604d3660046085565b90565b60405160ff90911681526020015b60405180910390f35b60786072366004609d565b60ff1690565b604051908152602001605e565b600060208284031215609657600080fd5b5035919050565b60006020828403121560ae57600080fd5b813560ff8116811460be57600080fd5b939250505056fea264697066735822122074bb6f75f2cab9692d05e41844bf40283045a9440c662c37a97b2502d38207ed64736f6c63430008140033",
46
+ "deployedBytecode": "0x7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80638e4ad86c146042578063ac43d834146067575b600080fd5b6050604d3660046085565b90565b60405160ff90911681526020015b60405180910390f35b60786072366004609d565b60ff1690565b604051908152602001605e565b600060208284031215609657600080fd5b5035919050565b60006020828403121560ae57600080fd5b813560ff8116811460be57600080fd5b939250505056fea264697066735822122074bb6f75f2cab9692d05e41844bf40283045a9440c662c37a97b2502d38207ed64736f6c63430008140033",
28
47
  "linkReferences": {},
29
48
  "deployedLinkReferences": {}
30
49
  }
@@ -1,42 +1,46 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
- import {IRegisterable} from "../shared/IRegisterable.sol";
7
6
  import {Registerable} from "../shared/Registerable.sol";
8
7
 
9
8
  import {IRegistry} from "../registry/IRegistry.sol";
10
9
  import {IInstance} from "../instance/IInstance.sol";
11
10
 
12
11
  import {IInstance} from "../instance/IInstance.sol";
13
- import {IComponent, IComponentModule} from "../instance/module/component/IComponent.sol";
14
12
  import {IComponentOwnerService} from "../instance/service/IComponentOwnerService.sol";
15
13
  import {IBaseComponent} from "./IBaseComponent.sol";
16
- import {Fee, FeeLib} from "../types/Fee.sol";
17
- import {NftId} from "../types/NftId.sol";
14
+ import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
15
+ import {ObjectType} from "../types/ObjectType.sol";
18
16
 
19
17
  abstract contract BaseComponent is
20
18
  Registerable,
21
19
  IBaseComponent
22
20
  {
21
+ using NftIdLib for NftId;
22
+
23
23
  IComponentOwnerService internal _componentOwnerService;
24
24
 
25
25
  address internal _deployer;
26
26
  address internal _wallet;
27
27
  IERC20Metadata internal _token;
28
28
  IInstance internal _instance;
29
- bool internal _isRegistered;
30
- Fee internal _zeroFee;
29
+ NftId internal _productNftId;
31
30
 
32
31
  constructor(
33
32
  address registry,
34
33
  NftId instanceNftId,
35
- address token
34
+ address token,
35
+ ObjectType componentType,
36
+ bool isInterceptor,
37
+ address initialOwner
36
38
  )
37
- Registerable(registry, instanceNftId)
38
39
  {
39
- IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(instanceNftId);
40
+ bytes memory data = "";
41
+ _initializeRegisterable(registry, instanceNftId, componentType, isInterceptor, initialOwner, data);
42
+
43
+ IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
40
44
  _instance = IInstance(instanceInfo.objectAddress);
41
45
  require(
42
46
  _instance.supportsInterface(type(IInstance).interfaceId),
@@ -46,24 +50,8 @@ abstract contract BaseComponent is
46
50
  _componentOwnerService = _instance.getComponentOwnerService();
47
51
  _wallet = address(this);
48
52
  _token = IERC20Metadata(token);
49
- _isRegistered = false;
50
- _zeroFee = FeeLib.zeroFee();
51
- }
52
-
53
- // from registerable
54
- function register() public override(IRegisterable, Registerable) returns (NftId componentId) {
55
- require(msg.sender == getOwner(), "");
56
- require(
57
- address(_registry) != address(0),
58
- "ERROR:COB-001:REGISTRY_ZERO"
59
- );
60
- require(
61
- _registry.isRegistered(address(_instance)),
62
- "ERROR:COB:INSTANCE_NOT_REGISTERED"
63
- );
64
53
 
65
- _isRegistered = true;
66
- return _componentOwnerService.register(this);
54
+ _registerInterface(type(IBaseComponent).interfaceId);
67
55
  }
68
56
 
69
57
  // from component contract
@@ -84,11 +72,20 @@ abstract contract BaseComponent is
84
72
  return _wallet;
85
73
  }
86
74
 
87
- function getToken() external view override returns (IERC20Metadata token) {
75
+ function getToken() public view override returns (IERC20Metadata token) {
88
76
  return _token;
89
77
  }
90
78
 
91
- function getInstance() external view override returns (IInstance instance) {
79
+ function getInstance() public view override returns (IInstance instance) {
92
80
  return _instance;
93
81
  }
82
+
83
+ function setProductNftId(NftId productNftId) public override onlyOwner {
84
+ require(_productNftId.eq(zeroNftId()), "product nft id already set");
85
+ _productNftId = productNftId;
86
+ }
87
+
88
+ function getProductNftId() public view override returns (NftId productNftId) {
89
+ return _productNftId;
90
+ }
94
91
  }
@@ -1,19 +1,26 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {ObjectType, DISTRIBUTION} from "../types/ObjectType.sol";
4
+ import {DISTRIBUTION} from "../types/ObjectType.sol";
5
5
  import {IDistributionService} from "../instance/service/IDistributionService.sol";
6
6
  import {IProductService} from "../instance/service/IProductService.sol";
7
- import {NftId} from "../types/NftId.sol";
8
- import {ReferralId} from "../types/ReferralId.sol";
7
+ import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
8
+ import {ReferralId} from "../types/Referral.sol";
9
9
  import {Fee, FeeLib} from "../types/Fee.sol";
10
10
  import {BaseComponent} from "./BaseComponent.sol";
11
11
  import {IDistributionComponent} from "./IDistributionComponent.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+ import {IRegisterable} from "../shared/IRegisterable.sol";
14
+ import {ISetup} from "../instance/module/ISetup.sol";
15
+ import {Registerable} from "../shared/Registerable.sol";
16
+ import {TokenHandler} from "../shared/TokenHandler.sol";
17
+ import {InstanceReader} from "../instance/InstanceReader.sol";
12
18
 
13
19
  contract Distribution is
14
20
  BaseComponent,
15
21
  IDistributionComponent
16
22
  {
23
+ using NftIdLib for NftId;
17
24
 
18
25
  Fee internal _initialDistributionFee;
19
26
  bool internal _isVerifying;
@@ -34,15 +41,19 @@ contract Distribution is
34
41
  // TODO refactor into tokenNftId
35
42
  address token,
36
43
  bool verifying,
37
- Fee memory distributionFee
44
+ Fee memory distributionFee,
45
+ address initialOwner
38
46
  )
39
- BaseComponent(registry, instanceNftId, token)
47
+ BaseComponent(registry, instanceNftId, token, DISTRIBUTION(), true, initialOwner)
40
48
  {
41
49
  _isVerifying = verifying;
42
50
  _initialDistributionFee = distributionFee;
43
51
 
44
52
  _distributionService = _instance.getDistributionService();
45
- _productService = _instance.getProductService();
53
+ // TODO: reactivate when services are available again
54
+ // _productService = _instance.getProductService();
55
+
56
+ _registerInterface(type(IDistributionComponent).interfaceId);
46
57
  }
47
58
 
48
59
 
@@ -64,7 +75,8 @@ contract Distribution is
64
75
  virtual override
65
76
  returns (uint256 feeAmount)
66
77
  {
67
- Fee memory fee = getDistributionFee();
78
+ ISetup.DistributionSetupInfo memory setupInfo = getSetupInfo();
79
+ Fee memory fee = setupInfo.distributionFee;
68
80
  (feeAmount,) = FeeLib.calculateFee(fee, netPremiumAmount);
69
81
  }
70
82
 
@@ -109,24 +121,46 @@ contract Distribution is
109
121
  return false;
110
122
  }
111
123
 
112
- /// @dev default distribution fee, ie when not using any valid referralId
113
- function getDistributionFee() public view returns (Fee memory distributionFee) {
114
- NftId productNftId = _instance.getProductNftId(getNftId());
115
- if (_instance.hasTreasuryInfo(productNftId)) {
116
- return _instance.getTreasuryInfo(productNftId).distributionFee;
117
- } else {
118
- return _initialDistributionFee;
119
- }
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
+ );
120
132
  }
121
133
 
134
+ function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
135
+ InstanceReader reader = _instance.getInstanceReader();
136
+ return reader.getDistributionSetupInfo(getNftId());
137
+ }
138
+
122
139
 
123
140
  /// @dev returns true iff the component needs to be called when selling/renewing policis
124
141
  function isVerifying() external view returns (bool verifying) {
125
142
  return _isVerifying;
126
143
  }
127
144
 
128
- // from registerable
129
- function getType() public pure override returns (ObjectType) {
130
- return DISTRIBUTION();
145
+ // from IRegisterable
146
+
147
+ function getInitialInfo()
148
+ public
149
+ view
150
+ override (IRegisterable, Registerable)
151
+ returns(IRegistry.ObjectInfo memory, bytes memory)
152
+ {
153
+ (
154
+ IRegistry.ObjectInfo memory info,
155
+ bytes memory data
156
+ ) = super.getInitialInfo();
157
+
158
+ return (
159
+ info,
160
+ abi.encode(
161
+ _initialDistributionFee,
162
+ _isVerifying
163
+ )
164
+ );
131
165
  }
132
166
  }
@@ -1,12 +1,13 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {IRegisterable} from "../shared/IRegisterable.sol";
7
- import {IInstanceLinked} from "../instance/IInstanceLinked.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
8
+ import {NftId} from "../types/NftId.sol";
8
9
 
9
- interface IBaseComponent is IRegisterable, IInstanceLinked {
10
+ interface IBaseComponent is IRegisterable {
10
11
 
11
12
  function lock() external;
12
13
 
@@ -16,4 +17,9 @@ interface IBaseComponent is IRegisterable, IInstanceLinked {
16
17
 
17
18
  function getWallet() external view returns (address walletAddress);
18
19
 
20
+ function getInstance() external view returns (IInstance instance);
21
+
22
+ function setProductNftId(NftId productNftId) external;
23
+ function getProductNftId() external view returns (NftId productNftId);
24
+
19
25
  }
@@ -2,11 +2,13 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import {Fee} from "../types/Fee.sol";
5
- import {ReferralId} from "../types/ReferralId.sol";
5
+ import {ReferralId} from "../types/Referral.sol";
6
6
  import {NftId} from "../types/NftId.sol";
7
- import {IBaseComponent} from "./IBaseComponent.sol";
7
+ import {ISetup} from "../instance/module/ISetup.sol";
8
8
 
9
- interface IDistributionComponent is IBaseComponent {
9
+ interface IDistributionComponent {
10
+
11
+ function getInitialSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
10
12
 
11
13
  function setFees(
12
14
  Fee memory distributionFee
@@ -39,9 +41,6 @@ interface IDistributionComponent is IBaseComponent {
39
41
  /// @dev returns true iff the referral id is valid
40
42
  function referralIsValid(ReferralId referralId) external view returns (bool isValid);
41
43
 
42
- /// @dev default distribution fee, ie when not using any valid referralId
43
- function getDistributionFee() external view returns (Fee memory distributionFee);
44
-
45
44
  /// @dev returns true iff the component needs to be called when selling/renewing policis
46
45
  function isVerifying() external view returns (bool verifying);
47
46
  }
@@ -1,12 +1,11 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {NftId} from "../types/NftId.sol";
5
5
  import {Fee} from "../types/Fee.sol";
6
6
  import {UFixed} from "../types/UFixed.sol";
7
- import {IBaseComponent} from "./IBaseComponent.sol";
8
7
 
9
- interface IPoolComponent is IBaseComponent {
8
+ interface IPoolComponent {
10
9
 
11
10
  event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
12
11
 
@@ -60,12 +59,4 @@ interface IPoolComponent is IBaseComponent {
60
59
 
61
60
  function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
62
61
 
63
- function getPoolFee() external view returns (Fee memory poolFee);
64
-
65
- function getStakingFee() external view returns (Fee memory stakingFee);
66
-
67
- function getPerformanceFee()
68
- external
69
- view
70
- returns (Fee memory performanceFee);
71
62
  }
@@ -1,14 +1,13 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Fee} from "../types/Fee.sol";
5
5
  import {NftId} from "../types/NftId.sol";
6
- import {ReferralId} from "../types/ReferralId.sol";
6
+ import {ReferralId} from "../types/Referral.sol";
7
7
  import {RiskId} from "../types/RiskId.sol";
8
8
 
9
- import {IBaseComponent} from "./IBaseComponent.sol";
9
+ interface IProductComponent {
10
10
 
11
- interface IProductComponent is IBaseComponent {
12
11
  function setFees(
13
12
  Fee memory productFee,
14
13
  Fee memory processingFee
@@ -30,9 +29,7 @@ interface IProductComponent is IBaseComponent {
30
29
  bytes memory applicationData
31
30
  ) external view returns (uint256 netPremiumAmount);
32
31
 
33
- function getProductFee() external view returns (Fee memory productFee);
34
- function getProcessingFee() external view returns (Fee memory processingFee);
35
-
32
+
36
33
  function getPoolNftId() external view returns (NftId poolNftId);
37
34
  function getDistributionNftId() external view returns (NftId distributionNftId);
38
35
  }
@@ -1,16 +1,29 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {ObjectType, POOL} from "../types/ObjectType.sol";
5
5
  import {IProductService} from "../instance/service/IProductService.sol";
6
6
  import {IPoolService} from "../instance/service/IPoolService.sol";
7
- import {NftId} from "../types/NftId.sol";
7
+ import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
8
8
  import {Fee} from "../types/Fee.sol";
9
9
  import {UFixed} from "../types/UFixed.sol";
10
10
  import {IPoolComponent} from "./IPoolComponent.sol";
11
11
  import {BaseComponent} from "./BaseComponent.sol";
12
+ import {TokenHandler} from "../shared/TokenHandler.sol";
13
+ import {ISetup} from "../instance/module/ISetup.sol";
14
+
15
+ import {IRegistry} from "../registry/IRegistry.sol";
16
+
17
+ // import {IPool} from "../instance/module/pool/IPoolModule.sol";
18
+ import {ITreasury} from "../instance/module/ITreasury.sol";
19
+ import {ISetup} from "../instance/module/ISetup.sol";
20
+ import {InstanceReader} from "../instance/InstanceReader.sol";
21
+
22
+ import {IRegisterable} from "../shared/IRegisterable.sol";
23
+ import {Registerable} from "../shared/Registerable.sol";
12
24
 
13
25
  contract Pool is BaseComponent, IPoolComponent {
26
+ using NftIdLib for NftId;
14
27
 
15
28
  bool internal _isVerifying;
16
29
  UFixed internal _collateralizationLevel;
@@ -44,13 +57,15 @@ contract Pool is BaseComponent, IPoolComponent {
44
57
  NftId instanceNftId,
45
58
  // TODO refactor into tokenNftId
46
59
  address token,
60
+ bool isInterceptor,
47
61
  bool verifying,
48
62
  UFixed collateralizationLevel,
49
63
  Fee memory poolFee,
50
64
  Fee memory stakingFee,
51
- Fee memory performanceFee
65
+ Fee memory performanceFee,
66
+ address initialOwner
52
67
  )
53
- BaseComponent(registry, instanceNftId, token)
68
+ BaseComponent(registry, instanceNftId, token, POOL(), isInterceptor, initialOwner)
54
69
  {
55
70
  _isVerifying = verifying;
56
71
  // TODO add validation
@@ -59,20 +74,11 @@ contract Pool is BaseComponent, IPoolComponent {
59
74
  _initialStakingFee = stakingFee;
60
75
  _initialPerformanceFee = performanceFee;
61
76
 
62
- _poolService = _instance.getPoolService();
63
- _productService = _instance.getProductService();
64
- }
77
+ // TODO: reactivate when services are available again
78
+ // _poolService = _instance.getPoolService();
79
+ // _productService = _instance.getProductService();
65
80
 
66
- function setFees(
67
- Fee memory poolFee,
68
- Fee memory stakingFee,
69
- Fee memory performanceFee
70
- )
71
- external
72
- onlyOwner
73
- override
74
- {
75
- _poolService.setFees(poolFee, stakingFee, performanceFee);
81
+ _registerInterface(type(IPoolComponent).interfaceId);
76
82
  }
77
83
 
78
84
  function createBundle(
@@ -97,17 +103,6 @@ contract Pool is BaseComponent, IPoolComponent {
97
103
  // TODO add logging
98
104
  }
99
105
 
100
- function setBundleFee(
101
- NftId bundleNftId,
102
- Fee memory fee
103
- )
104
- external
105
- override
106
- // TODO add onlyBundleOwner
107
- {
108
- _poolService.setBundleFee(bundleNftId, fee);
109
- }
110
-
111
106
  /**
112
107
  * @dev see {IPool.underwrite}.
113
108
  * Default implementation that only writes a {LogUnderwrittenByPool} entry.
@@ -150,6 +145,82 @@ contract Pool is BaseComponent, IPoolComponent {
150
145
  return _collateralizationLevel;
151
146
  }
152
147
 
148
+ function setFees(
149
+ Fee memory poolFee,
150
+ Fee memory stakingFee,
151
+ Fee memory performanceFee
152
+ )
153
+ external
154
+ onlyOwner
155
+ override
156
+ {
157
+ _poolService.setFees(poolFee, stakingFee, performanceFee);
158
+ }
159
+
160
+ function setBundleFee(
161
+ NftId bundleNftId,
162
+ Fee memory fee
163
+ )
164
+ external
165
+ override
166
+ // TODO add onlyBundleOwner
167
+ {
168
+ _poolService.setBundleFee(bundleNftId, fee);
169
+ }
170
+
171
+ function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
172
+ // TODO fix this
173
+ if (getNftId().eq(zeroNftId())) {
174
+ return ISetup.PoolSetupInfo(
175
+ _productNftId,
176
+ TokenHandler(address(0)),
177
+ _collateralizationLevel,
178
+ _initialPoolFee,
179
+ _initialStakingFee,
180
+ _initialPerformanceFee,
181
+ _isVerifying,
182
+ _wallet
183
+ );
184
+ }
185
+
186
+ InstanceReader reader = _instance.getInstanceReader();
187
+ return reader.getPoolSetupInfo(getNftId());
188
+ }
189
+
190
+ // from IRegisterable
191
+
192
+ // TODO used only once, occupies space
193
+ // TODO do not use super
194
+ function getInitialInfo()
195
+ public
196
+ view
197
+ override (IRegisterable, Registerable)
198
+ returns (IRegistry.ObjectInfo memory, bytes memory)
199
+ {
200
+ (
201
+ IRegistry.ObjectInfo memory info,
202
+ bytes memory data
203
+ ) = super.getInitialInfo();
204
+
205
+ return (
206
+ info,
207
+ abi.encode(
208
+ ISetup.PoolSetupInfo(
209
+ getProductNftId(),
210
+ TokenHandler(address(0)),
211
+ _collateralizationLevel,
212
+ _initialPoolFee,
213
+ _initialStakingFee,
214
+ _initialPerformanceFee,
215
+ _isVerifying,
216
+ _wallet
217
+ )
218
+ )
219
+ );
220
+ }
221
+
222
+ // Internals
223
+
153
224
  function _underwrite(
154
225
  NftId policyNftId,
155
226
  bytes memory policyData,
@@ -184,52 +255,4 @@ contract Pool is BaseComponent, IPoolComponent {
184
255
  filter
185
256
  );
186
257
  }
187
-
188
- // from pool component
189
- function getPoolFee()
190
- external
191
- view
192
- override
193
- returns (Fee memory poolFee)
194
- {
195
- NftId productNftId = _instance.getProductNftId(getNftId());
196
- if (_instance.hasTreasuryInfo(productNftId)) {
197
- return _instance.getTreasuryInfo(productNftId).poolFee;
198
- } else {
199
- return _initialPoolFee;
200
- }
201
- }
202
-
203
- function getStakingFee()
204
- external
205
- view
206
- override
207
- returns (Fee memory stakingFee)
208
- {
209
- NftId productNftId = _instance.getProductNftId(getNftId());
210
- if (_instance.hasTreasuryInfo(productNftId)) {
211
- return _instance.getTreasuryInfo(productNftId).stakingFee;
212
- } else {
213
- return _initialStakingFee;
214
- }
215
- }
216
-
217
- function getPerformanceFee()
218
- external
219
- view
220
- override
221
- returns (Fee memory performanceFee)
222
- {
223
- NftId productNftId = _instance.getProductNftId(getNftId());
224
- if (_instance.hasTreasuryInfo(productNftId)) {
225
- return _instance.getTreasuryInfo(productNftId).performanceFee;
226
- } else {
227
- return _initialPerformanceFee;
228
- }
229
- }
230
-
231
- // from registerable
232
- function getType() public pure override returns (ObjectType) {
233
- return POOL();
234
- }
235
258
  }