@etherisc/gif-next 0.0.2-f7b8c9f-518 → 0.0.2-f7bec40-735

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 (486) hide show
  1. package/README.md +178 -14
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +873 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1023 -204
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +636 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +862 -39
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +916 -129
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +694 -40
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +958 -267
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +778 -194
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +226 -1822
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +616 -0
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +444 -2190
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1348 -0
  30. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1569 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +979 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +656 -0
  38. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  40. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  42. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +282 -195
  44. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  46. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  53. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  55. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  57. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  59. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  61. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  62. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  63. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  64. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  65. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  66. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  67. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +918 -0
  69. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  71. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1288 -0
  73. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  75. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1384 -0
  77. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +752 -0
  79. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1103 -177
  81. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  83. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +231 -204
  85. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +735 -0
  87. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  88. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +540 -146
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +651 -0
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +669 -153
  95. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → service/IPricingService.sol/IPricingService.json} +245 -203
  97. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +88 -397
  99. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  100. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1281 -0
  101. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  103. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1080 -211
  105. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +708 -0
  107. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  108. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
  109. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  111. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  112. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +327 -531
  113. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  115. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  117. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +255 -63
  119. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +309 -196
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  123. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  124. package/artifacts/contracts/registry/Registry.sol/Registry.json +229 -212
  125. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  126. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +422 -269
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +311 -122
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  132. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  133. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  134. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +485 -0
  135. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  136. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  137. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  138. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  140. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  142. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  143. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  144. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  146. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  147. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  148. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  149. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +93 -67
  150. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  152. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  153. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +107 -27
  154. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  155. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  156. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +283 -63
  158. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +116 -51
  160. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  161. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  162. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  163. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +187 -180
  164. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  165. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +114 -0
  166. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  167. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  168. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  170. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  171. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  172. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +116 -51
  174. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  176. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  177. package/artifacts/contracts/test/TestService.sol/TestService.json +204 -200
  178. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  179. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  180. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  181. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  182. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  183. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -174
  184. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  185. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  186. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  187. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  188. package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
  189. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  191. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  194. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  196. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/Fee.sol/FeeLib.json +74 -19
  198. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  199. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  200. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  202. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  203. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  204. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  206. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  208. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  210. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  212. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  214. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  216. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  218. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  219. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  220. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  221. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +51 -7
  222. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  223. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  224. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  225. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  226. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  227. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  228. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  229. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  230. package/contracts/components/Component.sol +272 -0
  231. package/contracts/components/Distribution.sol +209 -79
  232. package/contracts/components/IComponent.sol +90 -0
  233. package/contracts/components/IDistributionComponent.sol +43 -18
  234. package/contracts/components/IPoolComponent.sol +90 -40
  235. package/contracts/components/IProductComponent.sol +17 -13
  236. package/contracts/components/Pool.sol +222 -166
  237. package/contracts/components/Product.sol +258 -182
  238. package/contracts/instance/BundleManager.sol +126 -0
  239. package/contracts/instance/Cloneable.sol +51 -0
  240. package/contracts/instance/IInstance.sol +63 -40
  241. package/contracts/instance/IInstanceService.sol +73 -0
  242. package/contracts/instance/Instance.sol +213 -71
  243. package/contracts/instance/InstanceAccessManager.sol +541 -0
  244. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  245. package/contracts/instance/InstanceReader.sol +368 -0
  246. package/contracts/instance/InstanceService.sol +308 -0
  247. package/contracts/instance/InstanceServiceManager.sol +54 -0
  248. package/contracts/instance/InstanceStore.sol +212 -0
  249. package/contracts/instance/ObjectManager.sol +82 -0
  250. package/contracts/instance/base/ComponentService.sol +148 -0
  251. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  252. package/contracts/instance/base/ILifecycle.sol +3 -3
  253. package/contracts/instance/base/KeyValueStore.sol +30 -42
  254. package/contracts/instance/base/Lifecycle.sol +27 -7
  255. package/contracts/instance/module/IAccess.sol +54 -0
  256. package/contracts/instance/module/IBundle.sol +23 -0
  257. package/contracts/instance/module/IComponents.sol +41 -0
  258. package/contracts/instance/module/IDistribution.sol +42 -0
  259. package/contracts/instance/module/IPolicy.sol +77 -0
  260. package/contracts/instance/module/IRisk.sol +11 -0
  261. package/contracts/instance/module/ISetup.sol +33 -0
  262. package/contracts/instance/module/ITreasury.sol +23 -0
  263. package/contracts/instance/service/ApplicationService.sol +186 -0
  264. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  265. package/contracts/instance/service/BundleService.sol +382 -0
  266. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  267. package/contracts/instance/service/ClaimService.sol +437 -0
  268. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  269. package/contracts/instance/service/DistributionService.sol +317 -23
  270. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  271. package/contracts/instance/service/IApplicationService.sol +62 -0
  272. package/contracts/instance/service/IBundleService.sol +118 -0
  273. package/contracts/instance/service/IClaimService.sol +90 -0
  274. package/contracts/instance/service/IDistributionService.sol +77 -2
  275. package/contracts/instance/service/IPolicyService.sol +80 -0
  276. package/contracts/instance/service/IPoolService.sol +95 -18
  277. package/contracts/instance/service/IPricingService.sol +37 -0
  278. package/contracts/instance/service/IProductService.sol +9 -76
  279. package/contracts/instance/service/PolicyService.sol +376 -0
  280. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  281. package/contracts/instance/service/PoolService.sol +339 -85
  282. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  283. package/contracts/instance/service/PricingService.sol +275 -0
  284. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  285. package/contracts/instance/service/ProductService.sol +135 -435
  286. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  287. package/contracts/registry/ChainNft.sol +49 -26
  288. package/contracts/registry/IRegistry.sol +53 -25
  289. package/contracts/registry/IRegistryService.sol +53 -16
  290. package/contracts/registry/ITransferInterceptor.sol +1 -0
  291. package/contracts/registry/Registry.sol +289 -313
  292. package/contracts/registry/RegistryAccessManager.sol +216 -0
  293. package/contracts/registry/RegistryService.sol +165 -247
  294. package/contracts/registry/RegistryServiceManager.sol +30 -11
  295. package/contracts/registry/ReleaseManager.sol +324 -0
  296. package/contracts/registry/TokenRegistry.sol +116 -0
  297. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  298. package/contracts/shared/ERC165.sol +15 -9
  299. package/contracts/shared/INftOwnable.sol +11 -10
  300. package/contracts/shared/IPolicyHolder.sol +40 -0
  301. package/contracts/shared/IRegisterable.sol +4 -6
  302. package/contracts/shared/IRegistryLinked.sol +11 -0
  303. package/contracts/shared/IService.sol +18 -0
  304. package/contracts/shared/IVersionable.sol +4 -47
  305. package/contracts/shared/NftOwnable.sol +65 -83
  306. package/contracts/shared/PolicyHolder.sol +94 -0
  307. package/contracts/shared/ProxyManager.sol +101 -26
  308. package/contracts/shared/Registerable.sol +25 -39
  309. package/contracts/shared/RegistryLinked.sol +43 -0
  310. package/contracts/shared/Service.sol +72 -0
  311. package/contracts/shared/TokenHandler.sol +35 -0
  312. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  313. package/contracts/shared/Versionable.sol +5 -93
  314. package/contracts/test/TestFee.sol +2 -2
  315. package/contracts/test/TestRegisterable.sol +1 -1
  316. package/contracts/test/TestRoleId.sol +1 -1
  317. package/contracts/test/TestService.sol +6 -7
  318. package/contracts/types/Amount.sol +109 -0
  319. package/contracts/types/Blocknumber.sol +1 -0
  320. package/contracts/types/ClaimId.sol +75 -0
  321. package/contracts/types/DistributorType.sol +55 -0
  322. package/contracts/types/Fee.sol +19 -10
  323. package/contracts/types/Key32.sol +8 -3
  324. package/contracts/types/NftId.sol +8 -0
  325. package/contracts/types/NftIdSet.sol +26 -24
  326. package/contracts/types/NumberId.sol +52 -0
  327. package/contracts/types/ObjectType.sol +44 -14
  328. package/contracts/types/PayoutId.sol +82 -0
  329. package/contracts/types/Referral.sol +89 -0
  330. package/contracts/types/RoleId.sol +68 -9
  331. package/contracts/types/Seconds.sol +54 -0
  332. package/contracts/types/StateId.sol +12 -3
  333. package/contracts/types/Timestamp.sol +22 -13
  334. package/contracts/types/UFixed.sol +129 -12
  335. package/contracts/types/Version.sol +5 -1
  336. package/package.json +6 -5
  337. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  338. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  339. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -254
  340. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  342. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  344. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  346. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  348. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  350. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  352. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  354. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  357. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  359. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  361. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  363. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  365. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  367. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  369. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  370. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  371. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  372. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  373. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  374. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  375. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  376. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  377. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  378. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -421
  379. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  380. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  381. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  384. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  387. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  389. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  392. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  394. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  396. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  397. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  398. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  400. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  401. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  402. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  403. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  404. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  405. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  406. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  407. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  408. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  409. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  410. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  411. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  412. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  413. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  414. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  415. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  416. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  417. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  418. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  419. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  420. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  421. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  422. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  423. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  424. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  425. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  426. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  427. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -794
  428. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  429. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  430. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  431. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  432. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  433. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  434. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  435. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  436. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  437. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  438. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  439. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  440. package/contracts/components/BaseComponent.sol +0 -79
  441. package/contracts/components/IBaseComponent.sol +0 -19
  442. package/contracts/experiment/errors/Require.sol +0 -38
  443. package/contracts/experiment/errors/Revert.sol +0 -44
  444. package/contracts/experiment/inheritance/A.sol +0 -53
  445. package/contracts/experiment/inheritance/B.sol +0 -28
  446. package/contracts/experiment/inheritance/C.sol +0 -34
  447. package/contracts/experiment/inheritance/IA.sol +0 -13
  448. package/contracts/experiment/inheritance/IB.sol +0 -10
  449. package/contracts/experiment/inheritance/IC.sol +0 -12
  450. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  451. package/contracts/experiment/statemachine/ISM.sol +0 -25
  452. package/contracts/experiment/statemachine/SM.sol +0 -57
  453. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  454. package/contracts/experiment/types/TypeA.sol +0 -47
  455. package/contracts/experiment/types/TypeB.sol +0 -29
  456. package/contracts/instance/IInstanceLinked.sol +0 -8
  457. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  458. package/contracts/instance/base/IInstanceBase.sol +0 -23
  459. package/contracts/instance/base/IService.sol +0 -15
  460. package/contracts/instance/base/InstanceBase.sol +0 -89
  461. package/contracts/instance/base/ModuleBase.sol +0 -57
  462. package/contracts/instance/base/ServiceBase.sol +0 -44
  463. package/contracts/instance/module/access/Access.sol +0 -149
  464. package/contracts/instance/module/access/IAccess.sol +0 -53
  465. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  466. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  467. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  468. package/contracts/instance/module/component/IComponent.sol +0 -28
  469. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  470. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  471. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  472. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  473. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  474. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  475. package/contracts/instance/module/risk/IRisk.sol +0 -26
  476. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  477. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  478. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  479. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  480. package/contracts/instance/service/ComponentOwnerService.sol +0 -275
  481. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  482. package/contracts/registry/IChainNft.sol +0 -22
  483. package/contracts/test/TestDistribution.sol +0 -22
  484. package/contracts/test/TestPool.sol +0 -27
  485. package/contracts/test/TestProduct.sol +0 -74
  486. package/contracts/types/ReferralId.sol +0 -48
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Initializable} from "@openzeppelin5/contracts/proxy/utils/Initializable.sol";
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
6
  import {NftId, zeroNftId} from "../types/NftId.sol";
7
7
  import {NftOwnable} from "../shared/NftOwnable.sol";
@@ -9,21 +9,14 @@ import {ObjectType} from "../types/ObjectType.sol";
9
9
 
10
10
  import {IRegistry} from "../registry/IRegistry.sol";
11
11
  import {IRegisterable} from "./IRegisterable.sol";
12
- import {Versionable} from "./Versionable.sol";
13
-
14
- import {ERC165} from "./ERC165.sol";
15
12
 
16
13
  contract Registerable is
17
- ERC165,
18
- Initializable,
19
14
  NftOwnable,
20
15
  IRegisterable
21
16
  {
22
17
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
23
18
  bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
24
19
 
25
- error ErrorRegisterableNotRegistry(address registryAddress);
26
-
27
20
  struct RegisterableStorage {
28
21
  NftId _parentNftId;
29
22
  ObjectType _objectType;
@@ -31,38 +24,31 @@ contract Registerable is
31
24
  bytes _data;
32
25
  }
33
26
 
34
- function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
35
- assembly {
36
- $.slot := REGISTERABLE_LOCATION_V1
37
- }
38
- }
39
-
40
- function _initializeRegisterable(
27
+ function initializeRegisterable(
41
28
  address registryAddress,
42
29
  NftId parentNftId,
43
30
  ObjectType objectType,
44
31
  bool isInterceptor,
45
32
  address initialOwner,
46
- bytes memory data
33
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
47
34
  )
48
- internal
49
- //onlyInitializing//TODO uncomment when "fully" upgradeable
35
+ public
50
36
  virtual
37
+ onlyInitializing
51
38
  {
52
- _initializeNftOwnable(
39
+ initializeNftOwnable(
53
40
  initialOwner,
54
41
  registryAddress);
55
42
 
56
- // TODO check parentNftId -> registry.isRegistered(parentNftId)
57
- // TODO check object-parent type pair -> registry.isValidTypeCombo() or something...verify with registry that setup will be able to register...
43
+ RegisterableStorage storage $;
44
+ assembly {
45
+ $.slot := REGISTERABLE_LOCATION_V1
46
+ }
58
47
 
59
- RegisterableStorage storage $ = _getRegisterableStorage();
60
48
  $._parentNftId = parentNftId;
61
49
  $._objectType = objectType;
62
50
  $._isInterceptor = isInterceptor;
63
- $._data = data;
64
-
65
- _registerInterface(type(IRegisterable).interfaceId);
51
+ $._data = registryData;
66
52
  }
67
53
 
68
54
 
@@ -70,20 +56,20 @@ contract Registerable is
70
56
  public
71
57
  view
72
58
  virtual
73
- returns (IRegistry.ObjectInfo memory, bytes memory data)
59
+ returns (IRegistry.ObjectInfo memory info)
74
60
  {
75
- RegisterableStorage storage $ = _getRegisterableStorage();
76
- return (
77
- IRegistry.ObjectInfo(
78
- zeroNftId(),
79
- $._parentNftId,
80
- $._objectType,
81
- $._isInterceptor,
82
- address(this),
83
- getOwner(),
84
- $._data
85
- ),
86
- bytes("")
87
- );
61
+ RegisterableStorage storage $;
62
+ assembly {
63
+ $.slot := REGISTERABLE_LOCATION_V1
64
+ }
65
+
66
+ info = IRegistry.ObjectInfo(
67
+ zeroNftId(),
68
+ $._parentNftId,
69
+ $._objectType,
70
+ $._isInterceptor,
71
+ address(this),
72
+ getOwner(),
73
+ $._data);
88
74
  }
89
75
  }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+
8
+ contract RegistryLinked is
9
+ Initializable,
10
+ IRegistryLinked
11
+ {
12
+
13
+ IRegistry private _registry;
14
+
15
+ /// @dev initialization for upgradable contracts
16
+ // used in _initializeRegisterable
17
+ function initializeRegistryLinked(
18
+ address registryAddress
19
+ )
20
+ public
21
+ virtual
22
+ onlyInitializing()
23
+ {
24
+ if (registryAddress.code.length == 0) {
25
+ revert ErrorNotRegistry(registryAddress);
26
+ }
27
+
28
+ _registry = IRegistry(registryAddress);
29
+
30
+ try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
31
+ if (!isRegistry) {
32
+ revert ErrorNotRegistry(registryAddress);
33
+ }
34
+ } catch {
35
+ revert ErrorNotRegistry(registryAddress);
36
+ }
37
+ }
38
+
39
+
40
+ function getRegistry() public view returns (IRegistry) {
41
+ return _registry;
42
+ }
43
+ }
@@ -0,0 +1,72 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+
7
+ import {ObjectType, REGISTRY, SERVICE} from "../types/ObjectType.sol";
8
+ import {NftId, zeroNftId} from "../types/NftId.sol";
9
+ import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
10
+
11
+ import {Versionable} from "./Versionable.sol";
12
+ import {IService} from "./IService.sol";
13
+ import {IVersionable} from "./IVersionable.sol";
14
+ import {Versionable} from "./Versionable.sol";
15
+ import {Registerable} from "./Registerable.sol";
16
+
17
+ import {IRegistry} from "../registry/IRegistry.sol";
18
+
19
+
20
+ /// @dev service base contract
21
+ abstract contract Service is
22
+ Registerable,
23
+ Versionable,
24
+ AccessManagedUpgradeable,
25
+ IService
26
+ {
27
+
28
+ uint8 private constant GIF_MAJOR_VERSION = 3;
29
+
30
+ // from Versionable
31
+ function getVersion()
32
+ public
33
+ pure
34
+ virtual override (IVersionable, Versionable)
35
+ returns(Version)
36
+ {
37
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
38
+ }
39
+
40
+ function initializeService(
41
+ address registry,
42
+ address authority, // real authority for registry service adress(0) for other services
43
+ address initialOwner
44
+ )
45
+ public
46
+ virtual
47
+ onlyInitializing()
48
+ {
49
+ initializeRegisterable(
50
+ registry,
51
+ IRegistry(registry).getNftId(),
52
+ SERVICE(),
53
+ false, // is interceptor
54
+ initialOwner,
55
+ ""); // data
56
+
57
+ // externally provided authority
58
+ if(authority != address(0)) {
59
+ __AccessManaged_init(authority);
60
+ } else {
61
+ address registryServiceAddress = getRegistry().getServiceAddress(
62
+ REGISTRY(),
63
+ VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
64
+
65
+ // copy authority from already registered registry services
66
+ __AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
67
+ }
68
+
69
+ registerInterface(type(IAccessManaged).interfaceId);
70
+ registerInterface(type(IService).interfaceId);
71
+ }
72
+ }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
6
+
7
+ import {Amount} from "../types/Amount.sol";
8
+
9
+ /// @dev token specific transfer helper
10
+ /// relies internally on oz SafeERC20.safeTransferFrom
11
+ contract TokenHandler {
12
+ IERC20Metadata private _token;
13
+
14
+ constructor(address token) {
15
+ _token = IERC20Metadata(token);
16
+ }
17
+
18
+ function transfer(
19
+ address from,
20
+ address to,
21
+ Amount amount
22
+ )
23
+ external
24
+ {
25
+ SafeERC20.safeTransferFrom(_token, from, to, amount.toInt());
26
+ }
27
+
28
+ function getToken()
29
+ external
30
+ view
31
+ returns (IERC20Metadata)
32
+ {
33
+ return _token;
34
+ }
35
+ }
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {ProxyAdmin} from "@openzeppelin5/contracts/proxy/transparent/ProxyAdmin.sol";
5
- import {TransparentUpgradeableProxy, ITransparentUpgradeableProxy} from "@openzeppelin5/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
4
+ import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
5
+ import {TransparentUpgradeableProxy, ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
6
6
 
7
7
  import {IVersionable} from "./IVersionable.sol";
8
8
 
@@ -1,85 +1,41 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Initializable} from "@openzeppelin5/contracts/proxy/utils/Initializable.sol";
5
-
6
- import {Blocknumber, blockNumber} from "../types/Blocknumber.sol";
7
- import {Timestamp, blockTimestamp} from "../types/Timestamp.sol";
8
- import {Version, VersionPart, VersionLib} from "../types/Version.sol";
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
9
5
 
10
6
  import {IVersionable} from "./IVersionable.sol";
11
-
7
+ import {Version, VersionLib} from "../types/Version.sol";
12
8
 
13
9
 
14
10
  abstract contract Versionable is
15
11
  Initializable,
16
12
  IVersionable
17
13
  {
18
- // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Versionable.sol")) - 1)) & ~bytes32(uint256(0xff))
19
- bytes32 private constant VERSIONABLE_LOCATION_V1 = 0x4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900;
20
-
21
-
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;
27
- }
28
-
29
-
30
14
  constructor() {
31
15
  _disableInitializers();
32
16
  }
33
- // TODO write test where new version of private _updateVersionHistory is added and used...
34
- function initialize(
35
- address implementation,
17
+
18
+ function initializeVersionable(
36
19
  address activatedBy,
37
20
  bytes memory data
38
21
  )
39
22
  public
40
23
  initializer
41
24
  {
42
- _updateVersionHistory(implementation, activatedBy);
43
25
  _initialize(activatedBy, data);
44
26
  }
45
27
 
46
- // TODO activatedBy MUST ALWAYS be an owner?
47
- function upgrade(
48
- address implementation,
49
- address activatedBy,
28
+ function upgradeVersionable(
50
29
  bytes memory data
51
30
  )
52
31
  external
53
32
  reinitializer(VersionLib.toUint64(getVersion()))
54
33
  {
55
- _updateVersionHistory(implementation, activatedBy);
56
34
  _upgrade(data);
57
35
  }
58
36
 
59
- function isInitialized(Version _version) public override view returns(bool) {
60
- return _getVersionableStorage()._versionHistory[_version].activatedIn.toInt() > 0;
61
- }
62
-
63
37
  function getVersion() public pure virtual returns(Version);
64
38
 
65
- function getVersionCount() public view override returns(uint256) {
66
- return _getVersionableStorage()._versions.length;
67
- }
68
-
69
- function getVersion(uint256 idx) public view override returns(Version) {
70
- return _getVersionableStorage()._versions[idx];
71
- }
72
-
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
- }
80
-
81
-
82
-
83
39
  // IMPORTANT each version must implement this function
84
40
  // each implementation MUST use onlyInitialising modifier
85
41
  // each implementation MUST call intializers of all base contracts...
@@ -91,7 +47,6 @@ abstract contract Versionable is
91
47
  revert();
92
48
  }
93
49
 
94
-
95
50
  // IMPORTANT each version except version "1" must implement this function
96
51
  // each implementation MUST use onlyInitialising modifier
97
52
  function _upgrade(bytes memory data)
@@ -101,47 +56,4 @@ abstract contract Versionable is
101
56
  {
102
57
  revert();
103
58
  }
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
- );
144
-
145
- emit LogVersionableInitialized(thisVersion, implementation, activatedBy);
146
- }
147
59
  }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {UFixed, UFixedMathLib} from "../types/UFixed.sol";
4
+ import {UFixed, UFixedLib} from "../types/UFixed.sol";
5
5
  import {Fee, FeeLib} from "../types/Fee.sol";
6
6
 
7
7
  contract TestFee {
@@ -15,7 +15,7 @@ contract TestFee {
15
15
  pure
16
16
  returns(Fee memory fee)
17
17
  {
18
- return FeeLib.toFee(UFixedMathLib.toUFixed(fractionalValue, exponent), fixedValue);
18
+ return FeeLib.toFee(UFixedLib.toUFixed(fractionalValue, exponent), fixedValue);
19
19
  }
20
20
 
21
21
  function getZeroFee() external pure returns(Fee memory fee) {
@@ -13,6 +13,6 @@ contract TestRegisterable is Registerable {
13
13
  // solhint-disable-next-line no-empty-blocks
14
14
  {
15
15
  bytes memory data = "";
16
- _initializeRegisterable(registry, registryNftId, objectType, isInterceptor, initialOwner, data);
16
+ initializeRegisterable(registry, registryNftId, objectType, isInterceptor, initialOwner, data);
17
17
  }
18
18
  }
@@ -4,7 +4,7 @@ pragma solidity ^0.8.19;
4
4
  import {RoleId, RoleIdLib, PRODUCT_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE_NAME, POOL_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
5
5
 
6
6
  contract TestRoleId {
7
- function getRole(string memory roleName) external pure returns (RoleId) { return RoleIdLib.toRoleId(roleName); }
7
+ function getRole(uint256 roleNum) external pure returns (RoleId) { return RoleIdLib.toRoleId(roleNum); }
8
8
 
9
9
  function getProductOwnerRoleName() external pure returns (string memory) { return PRODUCT_OWNER_ROLE_NAME(); }
10
10
  function getProductOwnerRole() external pure returns (RoleId) { return PRODUCT_OWNER_ROLE(); }
@@ -1,26 +1,25 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
+ import {ObjectType, PRODUCT} from "../../contracts/types/ObjectType.sol";
4
5
  import {NftId} from "../../contracts/types/NftId.sol";
5
6
  import {Version, VersionLib} from "../../contracts/types/Version.sol";
6
- import {ServiceBase} from "../../contracts/instance/base/ServiceBase.sol";
7
+ import {Service} from "../../contracts/shared/Service.sol";
7
8
 
8
9
  import {IVersionable} from "../../contracts/shared/IVersionable.sol";
9
10
  import {Versionable} from "../../contracts/shared/Versionable.sol";
10
11
 
11
- //import {IService} from "../../contracts/instance/base/IService.sol";
12
-
13
- contract TestService is ServiceBase {
12
+ contract TestService is Service {
14
13
 
15
14
  string public constant NAME = "TestService";
16
15
 
17
16
  constructor(address registry, NftId registryNftId, address initialOwner)
18
17
  // solhint-disable-next-line no-empty-blocks
19
18
  {
20
- _initializeServiceBase(registry, registryNftId, initialOwner);
19
+ initializeService(registry, address(0), initialOwner);
21
20
  }
22
21
 
23
- function getName() public pure override returns(string memory name) {
24
- return NAME;
22
+ function getDomain() public pure override returns(ObjectType) {
23
+ return PRODUCT();
25
24
  }
26
25
  }
@@ -0,0 +1,109 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {UFixed, UFixedLib} from "./UFixed.sol";
5
+
6
+ type Amount is uint96;
7
+
8
+ using {
9
+ addAmount as +,
10
+ subAmount as -,
11
+ eqAmount as ==,
12
+ ltAmount as <,
13
+ gtAmount as >,
14
+ AmountLib.eq,
15
+ AmountLib.eqz,
16
+ AmountLib.gtz,
17
+ AmountLib.toInt,
18
+ AmountLib.add,
19
+ AmountLib.toUFixed
20
+ } for Amount global;
21
+
22
+ function addAmount(Amount a, Amount b) pure returns (Amount) {
23
+ return AmountLib.add(a, b);
24
+ }
25
+
26
+ function subAmount(Amount a, Amount b) pure returns (Amount) {
27
+ return AmountLib.sub(a, b);
28
+ }
29
+
30
+ function eqAmount(Amount a, Amount b) pure returns (bool) {
31
+ return AmountLib.eq(a, b);
32
+ }
33
+
34
+ function ltAmount(Amount a, Amount b) pure returns (bool) {
35
+ return AmountLib.lt(a, b);
36
+ }
37
+
38
+ function gtAmount(Amount a, Amount b) pure returns (bool) {
39
+ return AmountLib.gt(a, b);
40
+ }
41
+
42
+ library AmountLib {
43
+
44
+ error ErrorAmountLibValueTooBig(uint256 amount);
45
+
46
+ function zero() public pure returns (Amount) {
47
+ return Amount.wrap(0);
48
+ }
49
+
50
+ function max() public pure returns (Amount) {
51
+ return Amount.wrap(_max());
52
+ }
53
+
54
+ /// @dev converts the uint amount into Amount
55
+ /// function reverts if value is exceeding max Amount value
56
+ function toAmount(uint256 amount) public pure returns (Amount) {
57
+ if(amount > _max()) {
58
+ revert ErrorAmountLibValueTooBig(amount);
59
+ }
60
+
61
+ return Amount.wrap(uint96(amount));
62
+ }
63
+
64
+ /// @dev return true if amount equals 0
65
+ function eqz(Amount amount) public pure returns (bool) {
66
+ return Amount.unwrap(amount) == 0;
67
+ }
68
+
69
+ /// @dev return true if amount1 equals amount2
70
+ function eq(Amount amount1, Amount amount2) public pure returns (bool) {
71
+ return Amount.unwrap(amount1) == Amount.unwrap(amount2);
72
+ }
73
+
74
+ /// @dev return true if amount a1 is smaller than a2
75
+ function lt(Amount a1, Amount a2) public pure returns (bool) {
76
+ return Amount.unwrap(a1) < Amount.unwrap(a2);
77
+ }
78
+
79
+ /// @dev return true if amount a1 is larger than a2
80
+ function gt(Amount a1, Amount a2) public pure returns (bool) {
81
+ return Amount.unwrap(a1) > Amount.unwrap(a2);
82
+ }
83
+
84
+ /// @dev return true if amount is larger than 0
85
+ function gtz(Amount amount) public pure returns (bool) {
86
+ return Amount.unwrap(amount) > 0;
87
+ }
88
+
89
+ function add(Amount a1, Amount a2) public pure returns (Amount) {
90
+ return Amount.wrap(Amount.unwrap(a1) + Amount.unwrap(a2));
91
+ }
92
+
93
+ function sub(Amount a1, Amount a2) public pure returns (Amount) {
94
+ return Amount.wrap(Amount.unwrap(a1) - Amount.unwrap(a2));
95
+ }
96
+
97
+ function toInt(Amount amount) public pure returns (uint256) {
98
+ return uint256(uint96(Amount.unwrap(amount)));
99
+ }
100
+
101
+ function toUFixed(Amount amount) public pure returns (UFixed) {
102
+ return UFixedLib.toUFixed(Amount.unwrap(amount));
103
+ }
104
+
105
+ function _max() internal pure returns (uint96) {
106
+ // IMPORTANT: type nees to match with actual definition for Amount
107
+ return type(uint96).max;
108
+ }
109
+ }
@@ -52,6 +52,7 @@ function blockBlocknumber() view returns (Blocknumber) {
52
52
  return toBlocknumber(block.number);
53
53
  }
54
54
 
55
+ // TODO move to BlocknumberLib and rename to zero()
55
56
  /// @dev Return the Blocknumber zero (0)
56
57
  function zeroBlocknumber() pure returns (Blocknumber) {
57
58
  return toBlocknumber(0);