@etherisc/gif-next 0.0.2-e1e92ab-754 → 0.0.2-e26c262-698

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 (454) hide show
  1. package/README.md +232 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +832 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +954 -192
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → components/IComponent.sol/IComponent.json} +192 -168
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +719 -27
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +773 -127
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +556 -33
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +906 -266
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +702 -159
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1415 -1008
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +567 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2129 -1194
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1311 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1279 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1033 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +701 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +203 -195
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → IComponents.sol/IComponents.json} +2 -2
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +968 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1093 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1341 -239
  79. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
  81. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +556 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +630 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +150 -207
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +727 -160
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → service/IPolicyService.sol/IPolicyService.json} +263 -191
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +84 -217
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +47 -414
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1021 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +689 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +314 -243
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +657 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +242 -533
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +373 -61
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +234 -216
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +333 -188
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +229 -297
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +312 -132
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  130. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  132. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  133. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  134. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  136. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  137. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  138. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  139. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +59 -44
  140. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  142. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  144. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  146. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  148. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  150. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  152. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/Service.sol/Service.json} +155 -151
  154. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  156. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  158. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  160. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  162. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  164. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  166. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestService.sol/TestService.json +148 -211
  168. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  171. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -174
  173. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  174. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  175. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  177. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  180. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  182. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Fee.sol/FeeLib.json +2 -2
  184. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  185. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  186. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  188. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  189. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  190. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  192. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  194. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  196. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  198. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  200. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  202. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  204. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  206. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  208. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  210. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  212. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  214. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  216. package/contracts/components/Component.sol +251 -0
  217. package/contracts/components/Distribution.sol +204 -79
  218. package/contracts/components/IComponent.sol +74 -0
  219. package/contracts/components/IDistributionComponent.sol +43 -18
  220. package/contracts/components/IPoolComponent.sol +88 -39
  221. package/contracts/components/IProductComponent.sol +12 -9
  222. package/contracts/components/Pool.sol +216 -163
  223. package/contracts/components/Product.sol +133 -139
  224. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  225. package/contracts/instance/BundleManager.sol +127 -0
  226. package/contracts/instance/Cloneable.sol +51 -0
  227. package/contracts/instance/IInstance.sol +85 -39
  228. package/contracts/instance/IInstanceService.sol +72 -0
  229. package/contracts/instance/Instance.sol +310 -66
  230. package/contracts/instance/InstanceAccessManager.sol +522 -0
  231. package/contracts/instance/InstanceReader.sol +290 -0
  232. package/contracts/instance/InstanceService.sol +495 -0
  233. package/contracts/instance/InstanceServiceManager.sol +54 -0
  234. package/contracts/instance/ObjectManager.sol +82 -0
  235. package/contracts/instance/base/ComponentService.sol +134 -0
  236. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  237. package/contracts/instance/base/ILifecycle.sol +3 -3
  238. package/contracts/instance/base/KeyValueStore.sol +52 -38
  239. package/contracts/instance/base/Lifecycle.sol +12 -3
  240. package/contracts/instance/module/IAccess.sol +54 -0
  241. package/contracts/instance/module/IBundle.sol +21 -0
  242. package/contracts/instance/module/IComponents.sol +35 -0
  243. package/contracts/instance/module/IDistribution.sol +41 -0
  244. package/contracts/instance/module/IPolicy.sol +72 -0
  245. package/contracts/instance/module/IRisk.sol +11 -0
  246. package/contracts/instance/module/ISetup.sol +33 -0
  247. package/contracts/instance/module/ITreasury.sol +23 -0
  248. package/contracts/instance/service/ApplicationService.sol +350 -0
  249. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  250. package/contracts/instance/service/BundleService.sol +336 -0
  251. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  252. package/contracts/instance/service/ClaimService.sol +151 -0
  253. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  254. package/contracts/instance/service/DistributionService.sol +435 -22
  255. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  256. package/contracts/instance/service/IApplicationService.sol +82 -0
  257. package/contracts/instance/service/IBundleService.sol +62 -0
  258. package/contracts/instance/service/IClaimService.sol +61 -0
  259. package/contracts/instance/service/IDistributionService.sol +87 -1
  260. package/contracts/instance/service/IPolicyService.sol +72 -0
  261. package/contracts/instance/service/IPoolService.sol +22 -24
  262. package/contracts/instance/service/IProductService.sol +9 -76
  263. package/contracts/instance/service/PolicyService.sol +403 -0
  264. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  265. package/contracts/instance/service/PoolService.sol +181 -110
  266. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  267. package/contracts/instance/service/ProductService.sol +163 -432
  268. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  269. package/contracts/registry/ChainNft.sol +47 -24
  270. package/contracts/registry/IRegistry.sol +52 -8
  271. package/contracts/registry/IRegistryService.sol +52 -20
  272. package/contracts/registry/ITransferInterceptor.sol +1 -0
  273. package/contracts/registry/Registry.sol +277 -236
  274. package/contracts/registry/RegistryAccessManager.sol +216 -0
  275. package/contracts/registry/RegistryService.sol +113 -271
  276. package/contracts/registry/RegistryServiceManager.sol +24 -25
  277. package/contracts/registry/ReleaseManager.sol +322 -0
  278. package/contracts/registry/TokenRegistry.sol +116 -0
  279. package/contracts/shared/ERC165.sol +14 -8
  280. package/contracts/shared/INftOwnable.sol +11 -10
  281. package/contracts/shared/IPolicyHolder.sol +26 -0
  282. package/contracts/shared/IRegisterable.sol +4 -6
  283. package/contracts/shared/IRegistryLinked.sol +12 -0
  284. package/contracts/shared/IService.sol +18 -0
  285. package/contracts/shared/IVersionable.sol +4 -47
  286. package/contracts/shared/NftOwnable.sol +67 -83
  287. package/contracts/shared/PolicyHolder.sol +81 -0
  288. package/contracts/shared/ProxyManager.sol +100 -25
  289. package/contracts/shared/Registerable.sol +16 -31
  290. package/contracts/shared/RegistryLinked.sol +48 -0
  291. package/contracts/shared/Service.sol +58 -0
  292. package/contracts/shared/TokenHandler.sol +33 -0
  293. package/contracts/shared/Versionable.sol +4 -92
  294. package/contracts/test/TestRegisterable.sol +1 -1
  295. package/contracts/test/TestRoleId.sol +1 -1
  296. package/contracts/test/TestService.sol +6 -7
  297. package/contracts/types/Blocknumber.sol +1 -0
  298. package/contracts/types/ClaimId.sol +52 -0
  299. package/contracts/types/DistributorType.sol +55 -0
  300. package/contracts/types/Fee.sol +1 -0
  301. package/contracts/types/Key32.sol +8 -3
  302. package/contracts/types/NftId.sol +8 -0
  303. package/contracts/types/NftIdSet.sol +26 -24
  304. package/contracts/types/NumberId.sol +52 -0
  305. package/contracts/types/ObjectType.sol +40 -14
  306. package/contracts/types/PayoutId.sol +54 -0
  307. package/contracts/types/Referral.sol +89 -0
  308. package/contracts/types/RoleId.sol +67 -15
  309. package/contracts/types/Seconds.sol +54 -0
  310. package/contracts/types/StateId.sol +6 -1
  311. package/contracts/types/Timestamp.sol +17 -13
  312. package/contracts/types/UFixed.sol +1 -0
  313. package/contracts/types/Version.sol +5 -1
  314. package/package.json +3 -3
  315. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  316. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -301
  317. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  318. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  319. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  320. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  321. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  322. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  324. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  326. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  328. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  330. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  332. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  334. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  337. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  339. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  341. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  343. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  345. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  347. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  349. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  351. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  352. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  353. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  354. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  355. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  356. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  357. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  358. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  359. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  360. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  361. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  362. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  363. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  364. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  365. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  366. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  367. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  368. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  369. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  370. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  371. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  372. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  373. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  375. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  376. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  378. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  380. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  383. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  385. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  388. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  390. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  393. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  395. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  397. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  398. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  399. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  400. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  401. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  402. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  403. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  404. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  405. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  406. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  407. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  408. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  409. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  410. package/contracts/components/BaseComponent.sol +0 -79
  411. package/contracts/components/IBaseComponent.sol +0 -19
  412. package/contracts/experiment/errors/Require.sol +0 -38
  413. package/contracts/experiment/errors/Revert.sol +0 -44
  414. package/contracts/experiment/inheritance/A.sol +0 -53
  415. package/contracts/experiment/inheritance/B.sol +0 -28
  416. package/contracts/experiment/inheritance/C.sol +0 -34
  417. package/contracts/experiment/inheritance/IA.sol +0 -13
  418. package/contracts/experiment/inheritance/IB.sol +0 -10
  419. package/contracts/experiment/inheritance/IC.sol +0 -12
  420. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  421. package/contracts/experiment/statemachine/ISM.sol +0 -25
  422. package/contracts/experiment/statemachine/SM.sol +0 -57
  423. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  424. package/contracts/experiment/types/TypeA.sol +0 -47
  425. package/contracts/experiment/types/TypeB.sol +0 -29
  426. package/contracts/instance/IInstanceLinked.sol +0 -8
  427. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  428. package/contracts/instance/base/IInstanceBase.sol +0 -23
  429. package/contracts/instance/base/IService.sol +0 -15
  430. package/contracts/instance/base/InstanceBase.sol +0 -89
  431. package/contracts/instance/base/ModuleBase.sol +0 -57
  432. package/contracts/instance/base/ServiceBase.sol +0 -44
  433. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  434. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  435. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  436. package/contracts/instance/module/component/IComponent.sol +0 -28
  437. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  438. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  439. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  440. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  441. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  442. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  443. package/contracts/instance/module/risk/IRisk.sol +0 -26
  444. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  445. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  446. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  447. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  448. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  449. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  450. package/contracts/registry/IChainNft.sol +0 -22
  451. package/contracts/test/TestDistribution.sol +0 -22
  452. package/contracts/test/TestPool.sol +0 -27
  453. package/contracts/test/TestProduct.sol +0 -74
  454. package/contracts/types/ReferralId.sol +0 -48
@@ -0,0 +1,33 @@
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
+ /// @dev token specific transfer helper
8
+ /// relies internally on oz SafeERC20.safeTransferFrom
9
+ contract TokenHandler {
10
+ IERC20Metadata private _token;
11
+
12
+ constructor(address token) {
13
+ _token = IERC20Metadata(token);
14
+ }
15
+
16
+ function transfer(
17
+ address from,
18
+ address to,
19
+ uint256 amount
20
+ )
21
+ external
22
+ {
23
+ SafeERC20.safeTransferFrom(_token, from, to, amount);
24
+ }
25
+
26
+ function getToken()
27
+ external
28
+ view
29
+ returns (IERC20Metadata)
30
+ {
31
+ return _token;
32
+ }
33
+ }
@@ -3,83 +3,39 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
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";
9
-
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
  }
@@ -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, 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
  }
@@ -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);
@@ -0,0 +1,52 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ // uint16 allows for 65'535 claims per policy
5
+ type ClaimId is uint16;
6
+
7
+ // type bindings
8
+ using {
9
+ eqClaimId as ==,
10
+ neClaimId as !=,
11
+ ClaimIdLib.eqz,
12
+ ClaimIdLib.gtz,
13
+ ClaimIdLib.toInt
14
+ } for ClaimId global;
15
+
16
+
17
+ // pure free functions for operators
18
+ function eqClaimId(ClaimId a, ClaimId b) pure returns (bool isSame) {
19
+ return ClaimId.unwrap(a) == ClaimId.unwrap(b);
20
+ }
21
+
22
+ function neClaimId(ClaimId a, ClaimId b) pure returns (bool isDifferent) {
23
+ return ClaimId.unwrap(a) != ClaimId.unwrap(b);
24
+ }
25
+
26
+ // library functions that operate on user defined type
27
+ library ClaimIdLib {
28
+ /// @dev Converts the ClaimId to a uint.
29
+ function zero() public pure returns (ClaimId) {
30
+ return ClaimId.wrap(0);
31
+ }
32
+
33
+ /// @dev Converts an uint into a ClaimId.
34
+ function toClaimId(uint256 a) public pure returns (ClaimId) {
35
+ return ClaimId.wrap(uint16(a));
36
+ }
37
+
38
+ /// @dev Converts the ClaimId to a uint.
39
+ function toInt(ClaimId a) public pure returns (uint16) {
40
+ return uint16(ClaimId.unwrap(a));
41
+ }
42
+
43
+ /// @dev Returns true if the value is non-zero (> 0).
44
+ function gtz(ClaimId a) public pure returns (bool) {
45
+ return ClaimId.unwrap(a) > 0;
46
+ }
47
+
48
+ /// @dev Returns true if the value is zero (== 0).
49
+ function eqz(ClaimId a) public pure returns (bool) {
50
+ return ClaimId.unwrap(a) == 0;
51
+ }
52
+ }
@@ -0,0 +1,55 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {NftId} from "./NftId.sol";
6
+ import {DISTRIBUTOR_TYPE} from "./ObjectType.sol";
7
+
8
+ type DistributorType is bytes8;
9
+
10
+ // type bindings
11
+ using {
12
+ eqDistributorType as ==,
13
+ neDistributorType as !=,
14
+ DistributorTypeLib.toKey32
15
+ } for DistributorType global;
16
+
17
+ // general pure free functions
18
+
19
+ // pure free functions for operators
20
+ function eqDistributorType(
21
+ DistributorType a,
22
+ DistributorType b
23
+ ) pure returns (bool isSame) {
24
+ return DistributorType.unwrap(a) == DistributorType.unwrap(b);
25
+ }
26
+
27
+ function neDistributorType(
28
+ DistributorType a,
29
+ DistributorType b
30
+ ) pure returns (bool isDifferent) {
31
+ return DistributorType.unwrap(a) != DistributorType.unwrap(b);
32
+ }
33
+
34
+ // library functions that operate on user defined type
35
+ library DistributorTypeLib {
36
+
37
+ function zero() public pure returns (DistributorType) {
38
+ return DistributorType.wrap(bytes8(0));
39
+ }
40
+
41
+ // @dev Converts a referral string into an id.
42
+ function toDistributorType(NftId distributionNftId, string memory name) public pure returns (DistributorType) {
43
+ return DistributorType.wrap(bytes8(keccak256(abi.encode(distributionNftId, name))));
44
+ }
45
+
46
+ /// @dev Returns the key32 value for the specified nft id and object type.
47
+ function toKey32(DistributorType id) public pure returns (Key32 key) {
48
+ return Key32Lib.toKey32(DISTRIBUTOR_TYPE(), toKeyId(id));
49
+ }
50
+
51
+ /// @dev Returns the key id value for the specified nft id
52
+ function toKeyId(DistributorType id) public pure returns (KeyId keyId) {
53
+ return KeyId.wrap(bytes31(DistributorType.unwrap(id)));
54
+ }
55
+ }
@@ -40,6 +40,7 @@ library FeeLib {
40
40
  return Fee(UFixedLib.toUFixed(percent, -2), 0);
41
41
  }
42
42
 
43
+ // TODO rename to zero
43
44
  /// @dev Return a zero fee struct (0, 0)
44
45
  function zeroFee() public pure returns (Fee memory fee) {
45
46
  return Fee(UFixed.wrap(0), 0);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {ObjectType} from "./ObjectType.sol";
5
5
 
@@ -10,7 +10,8 @@ type KeyId is bytes31;
10
10
  using {
11
11
  eqKey32 as ==,
12
12
  neKey32 as !=,
13
- Key32Lib.toKey
13
+ Key32Lib.toKeyId,
14
+ Key32Lib.toObjectType
14
15
  } for Key32 global;
15
16
 
16
17
  // @dev Returns true iff keys are identical
@@ -37,9 +38,13 @@ library Key32Lib {
37
38
  return Key32.wrap(bytes32(uintKey));
38
39
  }
39
40
 
40
- function toKey(Key32 key) public pure returns (ObjectType objectType, KeyId id) {
41
+ function toObjectType(Key32 key) public pure returns (ObjectType objectType) {
41
42
  bytes32 key32 = Key32.unwrap(key);
42
43
  objectType = ObjectType.wrap(uint8(uint256(key32 & TYPE_MASK) >> TYPE_SHIFT));
44
+ }
45
+
46
+ function toKeyId(Key32 key) public pure returns (KeyId id) {
47
+ bytes32 key32 = Key32.unwrap(key);
43
48
  id = KeyId.wrap(bytes31((key32 & ID_MASK) << ID_SHIFT));
44
49
  }
45
50
  }
@@ -24,6 +24,7 @@ function toNftId(uint256 id) pure returns (NftId) {
24
24
  return NftId.wrap(uint96(id));
25
25
  }
26
26
 
27
+ // TODO move to NftIdLib and rename to zero()
27
28
  /// @dev Return the NftId zero (0)
28
29
  function zeroNftId() pure returns (NftId) {
29
30
  return NftId.wrap(0);
@@ -40,6 +41,13 @@ function neNftId(NftId a, NftId b) pure returns (bool isDifferent) {
40
41
 
41
42
  // library functions that operate on user defined type
42
43
  library NftIdLib {
44
+
45
+ /// @dev the zero nft id
46
+ /// is never a valid nft id and implies a non-initialized value
47
+ function zero() public pure returns (NftId) {
48
+ return NftId.wrap(0);
49
+ }
50
+
43
51
  /// @dev Converts the NftId to a uint256.
44
52
  function toInt(NftId nftId) public pure returns (uint96) {
45
53
  return uint96(NftId.unwrap(nftId));
@@ -11,35 +11,37 @@ library LibNftIdSet {
11
11
  mapping(NftId nftid => uint256 index) at;
12
12
  }
13
13
 
14
- function add(Set storage set, NftId nftId) external returns(bool added) {
15
- if (set.at[nftId] == 0) {
16
- set.ids.push(nftId);
17
- set.at[nftId] = set.ids.length;
18
- return true;
19
- } else {
20
- return false;
14
+ error ErrorNftIdSetAlreadyAdded(NftId nftId);
15
+ error ErrorNftIdSetNotInSet(NftId nftId);
16
+
17
+
18
+ function add(Set storage set, NftId nftId) external {
19
+ if (set.at[nftId] > 0) {
20
+ revert ErrorNftIdSetAlreadyAdded(nftId);
21
21
  }
22
+
23
+ set.ids.push(nftId);
24
+ set.at[nftId] = set.ids.length;
22
25
  }
23
26
 
24
- function remove(Set storage set, NftId nftId) external returns(bool removed) {
27
+ function remove(Set storage set, NftId nftId) external {
25
28
  uint256 nftIdIndex = set.at[nftId];
26
29
 
27
- if (nftIdIndex > 0) {
28
- uint256 toDeleteIndex = nftIdIndex - 1;
29
- uint256 lastIndex = set.ids.length - 1;
30
-
31
- if (lastIndex != toDeleteIndex) {
32
- NftId lastId = set.ids[lastIndex];
33
- set.ids[toDeleteIndex] = lastId;
34
- set.at[lastId] = nftIdIndex; // Replace lastValue's index to valueIndex
35
- }
36
-
37
- set.ids.pop();
38
- delete set.at[nftId];
39
- return true;
40
- } else {
41
- return false;
30
+ if (nftIdIndex == 0) {
31
+ revert ErrorNftIdSetNotInSet(nftId);
42
32
  }
33
+
34
+ uint256 toDeleteIndex = nftIdIndex - 1;
35
+ uint256 lastIndex = set.ids.length - 1;
36
+
37
+ if (lastIndex != toDeleteIndex) {
38
+ NftId lastId = set.ids[lastIndex];
39
+ set.ids[toDeleteIndex] = lastId;
40
+ set.at[lastId] = nftIdIndex; // Replace lastValue's index to valueIndex
41
+ }
42
+
43
+ set.ids.pop();
44
+ delete set.at[nftId];
43
45
  }
44
46
 
45
47
  function isEmpty(Set storage set) external view returns(bool empty) {
@@ -50,7 +52,7 @@ library LibNftIdSet {
50
52
  return set.at[nftId] > 0;
51
53
  }
52
54
 
53
- function getLength(Set storage set) external view returns(uint256 length) {
55
+ function size(Set storage set) external view returns(uint256 length) {
54
56
  return set.ids.length;
55
57
  }
56
58
 
@@ -0,0 +1,52 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ // uint32 allows for 4'294'967'296 individual items
5
+ type NumberId is uint32;
6
+
7
+ // type bindings
8
+ using {
9
+ eqNumberId as ==,
10
+ neNumberId as !=,
11
+ NumberIdLib.eqz,
12
+ NumberIdLib.gtz,
13
+ NumberIdLib.toInt
14
+ } for NumberId global;
15
+
16
+
17
+ // pure free functions for operators
18
+ function eqNumberId(NumberId a, NumberId b) pure returns (bool isSame) {
19
+ return NumberId.unwrap(a) == NumberId.unwrap(b);
20
+ }
21
+
22
+ function neNumberId(NumberId a, NumberId b) pure returns (bool isDifferent) {
23
+ return NumberId.unwrap(a) != NumberId.unwrap(b);
24
+ }
25
+
26
+ // library functions that operate on user defined type
27
+ library NumberIdLib {
28
+ /// @dev Converts the NumberId to a uint.
29
+ function zero() public pure returns (NumberId) {
30
+ return NumberId.wrap(0);
31
+ }
32
+
33
+ /// @dev Converts an uint into a NumberId.
34
+ function toNumberId(uint256 a) public pure returns (NumberId) {
35
+ return NumberId.wrap(uint32(a));
36
+ }
37
+
38
+ /// @dev Converts the NumberId to a uint.
39
+ function toInt(NumberId a) public pure returns (uint32) {
40
+ return uint32(NumberId.unwrap(a));
41
+ }
42
+
43
+ /// @dev Returns true if the value is non-zero (> 0).
44
+ function gtz(NumberId a) public pure returns (bool) {
45
+ return NumberId.unwrap(a) > 0;
46
+ }
47
+
48
+ /// @dev Returns true if the value is zero (== 0).
49
+ function eqz(NumberId a) public pure returns (bool) {
50
+ return NumberId.unwrap(a) == 0;
51
+ }
52
+ }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  type ObjectType is uint8;
5
5
 
@@ -17,34 +17,47 @@ function PROTOCOL() pure returns (ObjectType) {
17
17
  return toObjectType(10);
18
18
  }
19
19
 
20
- function REGISTRY() pure returns (ObjectType) {
20
+ function ROLE() pure returns (ObjectType) {
21
21
  return toObjectType(20);
22
22
  }
23
23
 
24
- function TOKEN() pure returns (ObjectType) {
24
+ function TARGET() pure returns (ObjectType) {
25
25
  return toObjectType(30);
26
26
  }
27
27
 
28
- function SERVICE() pure returns (ObjectType) {
28
+ function REGISTRY() pure returns (ObjectType) {
29
29
  return toObjectType(40);
30
30
  }
31
31
 
32
- function INSTANCE() pure returns (ObjectType) {
32
+ function TOKEN() pure returns (ObjectType) {
33
33
  return toObjectType(50);
34
34
  }
35
35
 
36
- function STAKE() pure returns (ObjectType) {
36
+ function SERVICE() pure returns (ObjectType) {
37
37
  return toObjectType(60);
38
38
  }
39
39
 
40
+ function INSTANCE() pure returns (ObjectType) {
41
+ return toObjectType(70);
42
+ }
43
+
44
+ function STAKE() pure returns (ObjectType) {
45
+ return toObjectType(80);
46
+ }
47
+
40
48
  function COMPONENT() pure returns (ObjectType) {
41
49
  return toObjectType(100);
42
50
  }
43
51
 
52
+ // TODO replace by PRODUCT_SETUP
44
53
  function TREASURY() pure returns (ObjectType) {
45
54
  return toObjectType(101);
46
55
  }
47
56
 
57
+ function PRODUCT_SETUP() pure returns (ObjectType) {
58
+ return toObjectType(101);
59
+ }
60
+
48
61
  function PRODUCT() pure returns (ObjectType) {
49
62
  return toObjectType(110);
50
63
  }
@@ -53,6 +66,18 @@ function DISTRIBUTION() pure returns (ObjectType) {
53
66
  return toObjectType(120);
54
67
  }
55
68
 
69
+ function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
70
+ return toObjectType(121);
71
+ }
72
+
73
+ function DISTRIBUTOR() pure returns (ObjectType) {
74
+ return toObjectType(122);
75
+ }
76
+
77
+ function REFERRAL() pure returns (ObjectType) {
78
+ return toObjectType(123);
79
+ }
80
+
56
81
  function ORACLE() pure returns (ObjectType) {
57
82
  return toObjectType(130);
58
83
  }
@@ -65,31 +90,32 @@ function RISK() pure returns (ObjectType) {
65
90
  return toObjectType(200);
66
91
  }
67
92
 
68
- function POLICY() pure returns (ObjectType) {
93
+ function APPLICATION() pure returns (ObjectType) {
69
94
  return toObjectType(210);
70
95
  }
71
96
 
72
- function REFERRAL() pure returns (ObjectType) {
73
- return toObjectType(212);
97
+ function POLICY() pure returns (ObjectType) {
98
+ return toObjectType(211);
74
99
  }
75
100
 
76
101
  function CLAIM() pure returns (ObjectType) {
77
- return toObjectType(214);
78
- }
79
-
80
- function PAYOUT() pure returns (ObjectType) {
81
- return toObjectType(216);
102
+ return toObjectType(212);
82
103
  }
83
104
 
84
105
  function BUNDLE() pure returns (ObjectType) {
85
106
  return toObjectType(220);
86
107
  }
87
108
 
109
+ function PAYOUT() pure returns (ObjectType) {
110
+ return toObjectType(212);
111
+ }
112
+
88
113
  /// @dev Converts the uint8 to a ObjectType.
89
114
  function toObjectType(uint256 objectType) pure returns (ObjectType) {
90
115
  return ObjectType.wrap(uint8(objectType));
91
116
  }
92
117
 
118
+ // TODO move to ObjecTypeLib and rename to zero()
93
119
  /// @dev Return the ObjectType zero (0)
94
120
  function zeroObjectType() pure returns (ObjectType) {
95
121
  return ObjectType.wrap(0);