@etherisc/gif-next 0.0.2-78bf628-134 → 0.0.2-7acbd99-227

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 (268) hide show
  1. package/README.md +71 -25
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +80 -41
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +445 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +43 -40
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +343 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +199 -81
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +141 -47
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +299 -84
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +250 -53
  18. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  30. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  36. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  37. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +742 -425
  38. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
  39. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  40. package/artifacts/contracts/instance/Instance.sol/Instance.json +1014 -604
  41. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +139 -46
  43. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +33 -1
  45. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/IService.sol/IService.json +99 -55
  49. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +160 -48
  51. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +14 -14
  53. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
  55. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +135 -55
  58. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +1 -1
  60. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +55 -54
  63. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +56 -55
  66. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +12 -7
  68. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +12 -7
  71. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
  72. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
  73. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
  74. package/artifacts/contracts/instance/module/{compensation/ICompensation.sol/ICompensation.json → distribution/IDistribution.sol/IDistribution.json} +2 -2
  75. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
  76. package/artifacts/contracts/instance/module/{compensation/ICompensation.sol/ICompensationModule.json → distribution/IDistribution.sol/IDistributionModule.json} +2 -2
  77. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +53 -40
  80. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +53 -40
  82. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +29 -14
  85. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +28 -13
  87. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +104 -1
  90. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +126 -5
  92. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +326 -221
  95. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
  97. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +326 -221
  99. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +251 -84
  101. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +526 -0
  103. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +99 -74
  105. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +369 -0
  107. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  108. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +158 -50
  109. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  110. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +246 -49
  111. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  112. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +230 -52
  113. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  114. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +361 -70
  115. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +141 -12
  117. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  118. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +5 -0
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +293 -40
  121. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  122. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +668 -0
  124. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  126. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/Registry.sol/Registry.json +471 -121
  128. package/artifacts/contracts/registry/Registry.sol/RegistryCreationCode.dbg.json +4 -0
  129. package/artifacts/contracts/registry/Registry.sol/RegistryCreationCode.json +150 -0
  130. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.json +344 -0
  132. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  133. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +861 -0
  134. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  135. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  136. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +43 -40
  139. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
  141. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  142. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -0
  143. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +76 -37
  145. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  146. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  147. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
  149. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
  150. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +445 -0
  151. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  153. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestPool.sol/TestPool.json +299 -84
  155. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +297 -58
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +93 -39
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  161. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestService.sol/TestService.json +161 -68
  163. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  166. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +89 -25
  168. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  169. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  170. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/Fee.sol/FeeLib.json +50 -11
  174. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  176. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  178. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  180. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  182. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
  184. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  186. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  188. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  193. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  195. package/contracts/components/BaseComponent.sol +12 -21
  196. package/contracts/components/Distribution.sol +155 -0
  197. package/contracts/components/IBaseComponent.sol +2 -2
  198. package/contracts/components/IDistributionComponent.sol +47 -0
  199. package/contracts/components/IPoolComponent.sol +14 -6
  200. package/contracts/components/IProductComponent.sol +26 -6
  201. package/contracts/components/Pool.sol +99 -27
  202. package/contracts/components/Product.sol +204 -22
  203. package/contracts/instance/IInstance.sol +11 -7
  204. package/contracts/instance/Instance.sol +25 -7
  205. package/contracts/instance/base/ComponentServiceBase.sol +13 -6
  206. package/contracts/instance/base/IInstanceBase.sol +6 -2
  207. package/contracts/instance/base/InstanceBase.sol +13 -8
  208. package/contracts/instance/base/Lifecycle.sol +10 -2
  209. package/contracts/instance/base/ModuleBase.sol +22 -17
  210. package/contracts/instance/base/ServiceBase.sol +19 -13
  211. package/contracts/instance/module/access/Access.sol +3 -3
  212. package/contracts/instance/module/bundle/BundleModule.sol +10 -12
  213. package/contracts/instance/module/bundle/IBundle.sol +6 -11
  214. package/contracts/instance/module/component/ComponentModule.sol +20 -24
  215. package/contracts/instance/module/component/IComponent.sol +5 -4
  216. package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
  217. package/contracts/instance/module/distribution/IDistribution.sol +10 -0
  218. package/contracts/instance/module/policy/IPolicy.sol +10 -8
  219. package/contracts/instance/module/policy/PolicyModule.sol +33 -19
  220. package/contracts/instance/module/pool/IPoolModule.sol +4 -4
  221. package/contracts/instance/module/pool/PoolModule.sol +23 -15
  222. package/contracts/instance/module/risk/IRisk.sol +18 -2
  223. package/contracts/instance/module/risk/RiskModule.sol +56 -2
  224. package/contracts/instance/module/treasury/ITreasury.sol +32 -51
  225. package/contracts/instance/module/treasury/TokenHandler.sol +2 -2
  226. package/contracts/instance/module/treasury/TreasuryModule.sol +68 -89
  227. package/contracts/instance/service/ComponentOwnerService.sol +189 -79
  228. package/contracts/instance/service/DistributionService.sol +54 -0
  229. package/contracts/instance/service/IComponentOwnerService.sol +0 -2
  230. package/contracts/instance/service/IDistributionService.sol +12 -0
  231. package/contracts/instance/service/IPoolService.sol +7 -0
  232. package/contracts/instance/service/IProductService.sol +56 -7
  233. package/contracts/instance/service/PoolService.sol +49 -23
  234. package/contracts/instance/service/ProductService.sol +246 -91
  235. package/contracts/registry/ChainNft.sol +43 -15
  236. package/contracts/registry/IChainNft.sol +3 -2
  237. package/contracts/registry/IRegistry.sol +44 -28
  238. package/contracts/registry/IRegistryService.sol +29 -0
  239. package/contracts/registry/ITransferInterceptor.sol +6 -0
  240. package/contracts/registry/Registry.sol +388 -271
  241. package/contracts/registry/RegistryInstaller.sol +100 -0
  242. package/contracts/registry/RegistryService.sol +383 -0
  243. package/contracts/shared/ERC165.sol +1 -1
  244. package/contracts/shared/IRegisterable.sol +7 -9
  245. package/contracts/shared/IVersionable.sol +55 -11
  246. package/contracts/shared/ProxyManager.sol +115 -0
  247. package/contracts/shared/Registerable.sol +74 -43
  248. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  249. package/contracts/shared/Versionable.sol +112 -54
  250. package/contracts/test/TestDistribution.sol +22 -0
  251. package/contracts/test/TestPool.sol +7 -2
  252. package/contracts/test/TestProduct.sol +37 -7
  253. package/contracts/test/TestRegisterable.sol +5 -6
  254. package/contracts/test/TestService.sol +5 -11
  255. package/contracts/types/Fee.sol +8 -3
  256. package/contracts/types/ObjectType.sol +17 -5
  257. package/contracts/types/ReferralId.sol +48 -0
  258. package/contracts/types/RiskId.sol +43 -0
  259. package/contracts/types/RoleId.sol +2 -2
  260. package/contracts/types/Version.sol +9 -0
  261. package/package.json +1 -1
  262. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  263. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  264. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  265. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  266. package/contracts/experiment/statemachine/README.md +0 -112
  267. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  268. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
@@ -0,0 +1,115 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Ownable} from "@openzeppelin5/contracts/access/Ownable.sol";
5
+ import {ProxyAdmin} from "@openzeppelin5/contracts/proxy/transparent/ProxyAdmin.sol";
6
+ import {ITransparentUpgradeableProxy} from "@openzeppelin5/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
7
+
8
+ import {IVersionable} from "./IVersionable.sol";
9
+ import {UpgradableProxyWithAdmin} from "./UpgradableProxyWithAdmin.sol";
10
+ import {IVersionable} from "./IVersionable.sol";
11
+
12
+ /// @dev manages proxy deployments for upgradable contracs of type IVersionable
13
+ contract ProxyManager is Ownable {
14
+
15
+ event LogProxyDeployed(address indexed proxy, address initialImplementation);
16
+ event LogProxyDeployedWithSalt(address indexed proxy, address initialImplementation);
17
+ event LogProxyUpgraded(address indexed proxy, address upgradedImplementation);
18
+
19
+ error ErrorAlreadyDeployed();
20
+ error ErrorAlreadyDeployedWithSalt();
21
+ error ErrorNotYetDeployed();
22
+
23
+ UpgradableProxyWithAdmin private _proxy;
24
+ bool private _isDeployed;
25
+
26
+ /// @dev only used to capture proxy owner
27
+ constructor()
28
+ Ownable(msg.sender)
29
+ { }
30
+
31
+ /// @dev deploy initial contract
32
+ function deploy(address initialImplementation, bytes memory initializationData)
33
+ public
34
+ onlyOwner()
35
+ returns (IVersionable versionable)
36
+ {
37
+ if (_isDeployed) { revert ErrorAlreadyDeployed(); }
38
+
39
+ address currentProxyOwner = owner(); // used by implementation
40
+ address initialProxyAdminOwner = address(this); // used by proxy
41
+ bytes memory data = getDeployData(initialImplementation, currentProxyOwner, initializationData);
42
+
43
+ _proxy = new UpgradableProxyWithAdmin(
44
+ initialImplementation,
45
+ initialProxyAdminOwner,
46
+ data
47
+ );
48
+
49
+ _isDeployed = true;
50
+ versionable = IVersionable(address(_proxy));
51
+
52
+ emit LogProxyDeployed(address(_proxy), initialImplementation);
53
+ }
54
+
55
+ function deployWithSalt(address initialImplementation, bytes memory initializationData, bytes32 salt)
56
+ public
57
+ onlyOwner()
58
+ returns (IVersionable versionable)
59
+ {
60
+ if (_isDeployed) { revert ErrorAlreadyDeployedWithSalt(); }
61
+
62
+ address currentProxyOwner = owner(); // used by implementation
63
+ address initialProxyAdminOwner = address(this); // used by proxy
64
+ bytes memory data = getDeployData(initialImplementation, currentProxyOwner, initializationData);
65
+
66
+ // via create2
67
+ _proxy = new UpgradableProxyWithAdmin{salt: salt}(
68
+ initialImplementation,
69
+ initialProxyAdminOwner,
70
+ data
71
+ );
72
+
73
+ _isDeployed = true;
74
+ versionable = IVersionable(address(_proxy));
75
+
76
+ emit LogProxyDeployedWithSalt(address(_proxy), initialImplementation);
77
+ }
78
+
79
+ /// @dev upgrade existing contract
80
+ function upgrade(address newImplementation, bytes memory upgradeData)
81
+ public
82
+ virtual
83
+ onlyOwner()
84
+ returns (IVersionable versionable)
85
+ {
86
+ if (!_isDeployed) { revert ErrorNotYetDeployed(); }
87
+
88
+ address currentProxyOwner = owner();
89
+ ProxyAdmin proxyAdmin = getProxyAdmin();
90
+ ITransparentUpgradeableProxy proxy = ITransparentUpgradeableProxy(address(_proxy));
91
+ bytes memory data = getUpgradeData(newImplementation, currentProxyOwner, upgradeData);
92
+
93
+ proxyAdmin.upgradeAndCall(
94
+ proxy,
95
+ newImplementation,
96
+ data);
97
+
98
+ versionable = IVersionable(address(_proxy));
99
+
100
+ emit LogProxyUpgraded(address(_proxy), newImplementation);
101
+
102
+ }
103
+
104
+ function getDeployData(address implementation, address proxyOwner, bytes memory deployData) public pure returns (bytes memory data) {
105
+ return abi.encodeWithSelector(IVersionable.initialize.selector, implementation, proxyOwner, deployData);
106
+ }
107
+
108
+ function getUpgradeData(address implementation, address proxyOwner, bytes memory upgradeData) public pure returns (bytes memory data) {
109
+ return abi.encodeWithSelector(IVersionable.upgrade.selector, implementation, proxyOwner, upgradeData);
110
+ }
111
+
112
+ function getProxyAdmin() public returns (ProxyAdmin) {
113
+ return _proxy.getProxyAdmin();
114
+ }
115
+ }
@@ -1,21 +1,39 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin5/contracts/proxy/utils/Initializable.sol";
3
5
 
4
6
  import {NftId, zeroNftId} from "../types/NftId.sol";
5
7
  import {ObjectType} from "../types/ObjectType.sol";
6
8
 
7
9
  import {IRegistry} from "../registry/IRegistry.sol";
8
10
  import {IRegisterable} from "./IRegisterable.sol";
11
+ import {Versionable} from "./Versionable.sol";
9
12
 
10
13
  import {ERC165} from "./ERC165.sol";
11
14
 
12
15
  abstract contract Registerable is
13
16
  ERC165,
14
- IRegisterable
17
+ IRegisterable,
18
+ Initializable
15
19
  {
16
- IRegistry internal immutable _registry;
17
- NftId internal immutable _parentNftId;
18
- address internal immutable _initialOwner;
20
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
21
+ bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
22
+
23
+ struct RegisterableStorage {
24
+ IRegistry _registry;
25
+ NftId _parentNftId;
26
+ address _initialOwner;
27
+ ObjectType _objectType;
28
+ bool _isInterceptor;
29
+ bytes _data;
30
+ }
31
+
32
+ function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
33
+ assembly {
34
+ $.slot := REGISTERABLE_LOCATION_V1
35
+ }
36
+ }
19
37
 
20
38
  modifier onlyOwner() virtual {
21
39
  require(
@@ -25,62 +43,75 @@ abstract contract Registerable is
25
43
  _;
26
44
  }
27
45
 
28
- constructor(
46
+ function _initializeRegisterable(
29
47
  address registryAddress,
30
- NftId parentNftId
48
+ NftId parentNftId,
49
+ ObjectType objectType,
50
+ bool isInterceptor,
51
+ address initialOwner,
52
+ bytes memory data
31
53
  )
32
- ERC165()
54
+ internal
55
+ //onlyInitializing//TODO uncomment when "fully" upgradeable
56
+ virtual
33
57
  {
34
58
  require(
35
- address(registryAddress) != address(0),
59
+ registryAddress != address(0),
36
60
  "ERROR:RGB-010:REGISTRY_ZERO"
37
61
  );
38
62
 
39
- _registry = IRegistry(registryAddress);
40
- require(
41
- _registry.supportsInterface(type(IRegistry).interfaceId),
42
- "ERROR:RGB-011:NOT_REGISTRY"
43
- );
63
+ // TODO check parentNftId -> registry.isRegistered(parentNftId)
64
+ // TODO check object-parent type pair -> registry.isValidTypeCombo() or something...verify with registry that setup will be able to register...
44
65
 
45
- _parentNftId = parentNftId;
66
+ IRegistry registry = IRegistry(registryAddress);
46
67
  require(
47
- _registry.isRegistered(_parentNftId),
48
- "ERROR:RGB-012:PARENT_NOT_REGISTERED"
68
+ registry.supportsInterface(type(IRegistry).interfaceId),
69
+ "ERROR:RGB-011:NOT_REGISTRY"
49
70
  );
50
71
 
51
- _initialOwner = msg.sender;
72
+ RegisterableStorage storage $ = _getRegisterableStorage();
73
+ $._registry = registry;
74
+ $._parentNftId = parentNftId;
75
+ $._objectType = objectType;
76
+ $._isInterceptor = isInterceptor;
77
+ $._initialOwner = initialOwner;// not msg.sender because called in proxy constructor where msg.sender is proxy deployer
78
+ $._data = data;
52
79
 
53
- // register support for IRegisterable
54
- _registerInterface(type(IRegisterable).interfaceId);
80
+ _registerInterface(type(Registerable).interfaceId);
55
81
  }
56
82
 
57
- // from IRegistryLinked
58
- function register() public onlyOwner virtual override returns (NftId nftId) {
59
- return _registry.register(address(this));
83
+ // from IOwnable
84
+ function getOwner() public view virtual returns (address) {
85
+ return _getRegisterableStorage()._registry.ownerOf(address(this));
60
86
  }
61
87
 
62
- function getRegistry() public view virtual override returns (IRegistry registry) {
63
- return _registry;
88
+ // from IRegisterable
89
+ function getRegistry() public view virtual returns (IRegistry registry) {
90
+ return _getRegisterableStorage()._registry;
64
91
  }
65
92
 
66
- function getOwner() public view virtual override returns (address owner) {
67
- NftId nftId = _registry.getNftId(address(this));
68
- if(nftId == zeroNftId()) {
69
- return _initialOwner;
70
- }
71
-
72
- return _registry.getOwner(nftId);
73
- }
74
-
75
- function getNftId() public view override returns (NftId nftId) {
76
- return _registry.getNftId(address(this));
93
+ function getNftId() public view virtual returns (NftId nftId) {
94
+ return _getRegisterableStorage()._registry.getNftId(address(this));
77
95
  }
78
96
 
79
- function getParentNftId() public view override returns (NftId nftId) {
80
- return _parentNftId;
81
- }
82
-
83
- function getData() public view virtual override returns (bytes memory data) {
84
- return "";
97
+ function getInitialInfo()
98
+ public
99
+ view
100
+ virtual
101
+ returns (IRegistry.ObjectInfo memory, bytes memory data)
102
+ {
103
+ RegisterableStorage storage $ = _getRegisterableStorage();
104
+ return (
105
+ IRegistry.ObjectInfo(
106
+ zeroNftId(),
107
+ $._parentNftId,
108
+ $._objectType,
109
+ $._isInterceptor,
110
+ address(this),
111
+ $._initialOwner,
112
+ $._data
113
+ ),
114
+ bytes("")
115
+ );
85
116
  }
86
- }
117
+ }
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ProxyAdmin} from "@openzeppelin5/contracts/proxy/transparent/ProxyAdmin.sol";
5
+ import {TransparentUpgradeableProxy, ITransparentUpgradeableProxy} from "@openzeppelin5/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
6
+
7
+ import {IVersionable} from "./IVersionable.sol";
8
+
9
+ contract UpgradableProxyWithAdmin is TransparentUpgradeableProxy {
10
+
11
+ constructor(address implementation, address initialProxyAdminOwner, bytes memory data)
12
+ TransparentUpgradeableProxy(implementation, initialProxyAdminOwner, data)
13
+ {}
14
+
15
+ function getProxyAdmin() external returns (ProxyAdmin) { return ProxyAdmin(_proxyAdmin()); }
16
+ }
@@ -1,89 +1,147 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin5/contracts/proxy/utils/Initializable.sol";
3
5
 
4
6
  import {Blocknumber, blockNumber} from "../types/Blocknumber.sol";
5
7
  import {Timestamp, blockTimestamp} from "../types/Timestamp.sol";
6
- import {Version, VersionPart} from "../types/Version.sol";
8
+ import {Version, VersionPart, VersionLib} from "../types/Version.sol";
7
9
 
8
10
  import {IVersionable} from "./IVersionable.sol";
9
11
 
10
- abstract contract Versionable is IVersionable {
11
12
 
12
- mapping(Version version => VersionInfo info) private _versionHistory;
13
- Version [] private _versions;
14
13
 
14
+ abstract contract Versionable is
15
+ Initializable,
16
+ IVersionable
17
+ {
18
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Versionable.sol")) - 1)) & ~bytes32(uint256(0xff))
19
+ bytes32 private constant VERSIONABLE_LOCATION_V1 = 0x4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900;
15
20
 
16
- // controlled activation for controller contract
17
- constructor() {
18
- _activate(address(0), msg.sender);
19
- }
20
21
 
21
- // IMPORTANT this function needs to be implemented by each new version
22
- // and needs to call internal function call _activate()
23
- function activate(address implementation, address activatedBy)
24
- external
25
- override
26
- {
27
- _activate(implementation, activatedBy);
22
+ /// @custom:storage-location erc7201:gif-next.contracts.shared.Versionable.sol
23
+ struct VersionableStorage {
24
+ mapping(Version version => VersionInfo info) _versionHistory;
25
+ Version [] _versions;
26
+ Version _v1;
28
27
  }
29
28
 
30
29
 
31
- // can only be called once per contract
32
- // needs bo be called inside the proxy upgrade tx
33
- function _activate(
30
+ constructor() {
31
+ _disableInitializers();
32
+ }
33
+ // TODO write test where new version of private _updateVersionHistory is added and used...
34
+ function initialize(
34
35
  address implementation,
35
- address activatedBy
36
+ address activatedBy,
37
+ bytes memory data
36
38
  )
37
- internal
39
+ public
40
+ initializer
38
41
  {
39
- Version thisVersion = getVersion();
40
- require(
41
- !isActivated(thisVersion),
42
- "ERROR:VRN-001:VERSION_ALREADY_ACTIVATED"
43
- );
44
-
45
- // require increasing version number
46
- if(_versions.length > 0) {
47
- Version lastVersion = _versions[_versions.length - 1];
48
- require(
49
- thisVersion > lastVersion,
50
- "ERROR:VRN-002:VERSION_NOT_INCREASING"
51
- );
52
- }
42
+ _updateVersionHistory(implementation, activatedBy);
43
+ _initialize(activatedBy, data);
44
+ }
53
45
 
54
- // update version history
55
- _versions.push(thisVersion);
56
- _versionHistory[thisVersion] = VersionInfo(
57
- thisVersion,
58
- implementation,
59
- activatedBy,
60
- blockTimestamp(),
61
- blockNumber()
62
- );
46
+ // TODO activatedBy MUST ALWAYS be an owner?
47
+ function upgrade(
48
+ address implementation,
49
+ address activatedBy,
50
+ bytes memory data
51
+ )
52
+ external
53
+ reinitializer(VersionLib.toUint64(getVersion()))
54
+ {
55
+ _updateVersionHistory(implementation, activatedBy);
56
+ _upgrade(data);
57
+ }
63
58
 
64
- emit LogVersionableActivated(thisVersion, implementation, activatedBy);
59
+ function isInitialized(Version _version) public override view returns(bool) {
60
+ return _getVersionableStorage()._versionHistory[_version].activatedIn.toInt() > 0;
65
61
  }
66
62
 
63
+ function getVersion() public pure virtual returns(Version);
67
64
 
68
- function isActivated(Version _version) public override view returns(bool) {
69
- return _versionHistory[_version].activatedIn.toInt() > 0;
65
+ function getVersionCount() public view override returns(uint256) {
66
+ return _getVersionableStorage()._versions.length;
70
67
  }
71
68
 
69
+ function getVersion(uint256 idx) public view override returns(Version) {
70
+ return _getVersionableStorage()._versions[idx];
71
+ }
72
72
 
73
- function getVersion() public pure virtual returns(Version);
73
+ function getVersionInfo(Version _version) public override view returns(VersionInfo memory) {
74
+ return _getVersionableStorage()._versionHistory[_version];
75
+ }
76
+
77
+ function getInitializedVersion() public view returns(uint64) {
78
+ return _getInitializedVersion();
79
+ }
74
80
 
75
81
 
76
- function getVersionCount() external view override returns(uint256) {
77
- return _versions.length;
82
+
83
+ // IMPORTANT each version must implement this function
84
+ // each implementation MUST use onlyInitialising modifier
85
+ // each implementation MUST call intializers of all base contracts...
86
+ function _initialize(address owner, bytes memory data)
87
+ internal
88
+ onlyInitializing
89
+ virtual
90
+ {
91
+ revert();
78
92
  }
79
93
 
80
94
 
81
- function getVersion(uint256 idx) external view override returns(Version) {
82
- return _versions[idx];
95
+ // IMPORTANT each version except version "1" must implement this function
96
+ // each implementation MUST use onlyInitialising modifier
97
+ function _upgrade(bytes memory data)
98
+ internal
99
+ onlyInitializing
100
+ virtual
101
+ {
102
+ revert();
83
103
  }
84
104
 
105
+ function _getVersionableStorage() private pure returns (VersionableStorage storage $) {
106
+ assembly {
107
+ $.slot := VERSIONABLE_LOCATION_V1
108
+ }
109
+ }
110
+
111
+ // can only be called once per contract
112
+ // needs to be called inside the proxy upgrade tx
113
+ // TODO run reinitializer(version().toUint64()) modifier after "version()" is checked,
114
+ function _updateVersionHistory(
115
+ address implementation,
116
+ address activatedBy
117
+ )
118
+ private
119
+ onlyInitializing
120
+ {
121
+ VersionableStorage storage $ = _getVersionableStorage();
122
+
123
+ uint64 version = _getInitializedVersion();
124
+
125
+ Version thisVersion = getVersion();
126
+
127
+ if(version == 1) {
128
+ // thisVersion is alias to version "1"
129
+ $._v1 = thisVersion;
130
+ }
131
+ else {
132
+ require(thisVersion > $._v1, "INVALID VERSION");
133
+ }
134
+
135
+ // update version history
136
+ $._versions.push(thisVersion);
137
+ $._versionHistory[thisVersion] = VersionInfo(
138
+ thisVersion,
139
+ implementation,
140
+ activatedBy,
141
+ blockTimestamp(),
142
+ blockNumber()
143
+ );
85
144
 
86
- function getVersionInfo(Version _version) external override view returns(VersionInfo memory) {
87
- return _versionHistory[_version];
145
+ emit LogVersionableInitialized(thisVersion, implementation, activatedBy);
88
146
  }
89
147
  }
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Fee} from "../../contracts/types/Fee.sol";
5
+ import {NftId} from "../../contracts/types/NftId.sol";
6
+ import {Distribution} from "../../contracts/components/Distribution.sol";
7
+
8
+
9
+ contract TestDistribution is Distribution {
10
+
11
+ constructor(
12
+ address registry,
13
+ NftId instanceNftid,
14
+ address token,
15
+ bool isVerifying,
16
+ Fee memory distributionFee,
17
+ address initialOwner
18
+ )
19
+ Distribution(registry, instanceNftid, token, isVerifying, distributionFee, initialOwner)
20
+ // solhint-disable-next-line no-empty-blocks
21
+ {}
22
+ }
@@ -13,10 +13,15 @@ contract TestPool is Pool {
13
13
  address registry,
14
14
  NftId instanceNftid,
15
15
  address token,
16
+ bool isInterceptor,
16
17
  bool isVerifying,
17
- UFixed collateralizationLevel
18
+ UFixed collateralizationLevel,
19
+ Fee memory poolFee,
20
+ Fee memory stakingFee,
21
+ Fee memory performanceFee,
22
+ address initialOwner
18
23
  )
19
- Pool(registry, instanceNftid, token, isVerifying, collateralizationLevel)
24
+ Pool(registry, instanceNftid, token, isInterceptor, isVerifying, collateralizationLevel, poolFee, stakingFee, performanceFee, initialOwner)
20
25
  // solhint-disable-next-line no-empty-blocks
21
26
  {}
22
27
  }
@@ -3,6 +3,8 @@ pragma solidity ^0.8.19;
3
3
 
4
4
  import {Product} from "../../contracts/components/Product.sol";
5
5
  import {NftId, toNftId} from "../../contracts/types/NftId.sol";
6
+ import {ReferralId} from "../types/ReferralId.sol";
7
+ import {RiskId} from "../../contracts/types/RiskId.sol";
6
8
  import {Timestamp, blockTimestamp} from "../../contracts/types/Timestamp.sol";
7
9
  import {Fee} from "../../contracts/types/Fee.sol";
8
10
 
@@ -10,26 +12,54 @@ contract TestProduct is Product {
10
12
 
11
13
  event LogTestProductSender(address sender);
12
14
 
13
- constructor(address registry, NftId instanceNftid, address token, address pool)
14
- Product(registry, instanceNftid, token, pool)
15
+ string public constant DEFAULT_RISK_NAME = "DEFAULT_RISK";
16
+ bool private defaultRiskCreated;
17
+
18
+ constructor(
19
+ address registry,
20
+ NftId instanceNftid,
21
+ address token,
22
+ bool isInterceptor,
23
+ address pool,
24
+ address distribution,
25
+ Fee memory productFee,
26
+ Fee memory processingFee,
27
+ address initialOwner
28
+ )
29
+ Product(registry, instanceNftid, token, isInterceptor, pool, distribution, productFee, processingFee, initialOwner)
15
30
  // solhint-disable-next-line no-empty-blocks
16
- {}
31
+ {
32
+ }
33
+
34
+ function getDefaultRiskId() public pure returns (RiskId) {
35
+ return _toRiskId(DEFAULT_RISK_NAME);
36
+ }
17
37
 
18
38
  function applyForPolicy(
19
39
  uint256 sumInsuredAmount,
20
- uint256 premiumAmount,
21
40
  uint256 lifetime,
22
- NftId bundleNftId
41
+ NftId bundleNftId,
42
+ ReferralId referralId
23
43
  )
24
44
  external
25
45
  returns(NftId nftId)
26
46
  {
47
+ RiskId riskId = getDefaultRiskId();
48
+ bytes memory applicationData = "";
49
+
50
+ if (!defaultRiskCreated) {
51
+ _createRisk(riskId, "");
52
+ defaultRiskCreated = true;
53
+ }
54
+
27
55
  nftId = _createApplication(
28
56
  msg.sender, // policy holder
57
+ riskId,
29
58
  sumInsuredAmount,
30
- premiumAmount,
31
59
  lifetime,
32
- bundleNftId
60
+ applicationData,
61
+ bundleNftId,
62
+ referralId
33
63
  );
34
64
  }
35
65
 
@@ -8,12 +8,11 @@ import {Registerable} from "../../contracts/shared/Registerable.sol";
8
8
 
9
9
  contract TestRegisterable is Registerable {
10
10
 
11
- constructor(address registry, NftId registryNftId)
12
- Registerable(registry, registryNftId)
11
+ constructor(address registry, NftId registryNftId, ObjectType objectType, bool isInterceptor, address initialOwner)
12
+ //Registerable(registry, registryNftId)
13
13
  // solhint-disable-next-line no-empty-blocks
14
- {}
15
-
16
- function getType() external pure override returns (ObjectType) {
17
- return TOKEN();
14
+ {
15
+ bytes memory data = "";
16
+ _initializeRegisterable(registry, registryNftId, objectType, isInterceptor, initialOwner, data);
18
17
  }
19
18
  }
@@ -8,25 +8,19 @@ import {ServiceBase} from "../../contracts/instance/base/ServiceBase.sol";
8
8
  import {IVersionable} from "../../contracts/shared/IVersionable.sol";
9
9
  import {Versionable} from "../../contracts/shared/Versionable.sol";
10
10
 
11
+ //import {IService} from "../../contracts/instance/base/IService.sol";
12
+
11
13
  contract TestService is ServiceBase {
12
14
 
13
15
  string public constant NAME = "TestService";
14
16
 
15
- constructor(address registry, NftId registryNftId)
16
- ServiceBase(registry, registryNftId)
17
+ constructor(address registry, NftId registryNftId, address initialOwner)
17
18
  // solhint-disable-next-line no-empty-blocks
18
- {}
19
-
20
- function getVersion()
21
- public
22
- pure
23
- virtual override (IVersionable, Versionable)
24
- returns(Version)
25
19
  {
26
- return VersionLib.toVersion(3,0,0);
20
+ _initializeServiceBase(registry, registryNftId, initialOwner);
27
21
  }
28
22
 
29
- function getName() external pure override returns(string memory name) {
23
+ function getName() public pure override returns(string memory name) {
30
24
  return NAME;
31
25
  }
32
26
  }