@etherisc/gif-next 0.0.2-da77c50-824 → 0.0.2-dc95063-418

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 (474) hide show
  1. package/README.md +314 -11
  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 +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1319 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +279 -226
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +869 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +714 -116
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +512 -61
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1112 -143
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +957 -105
  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 +1474 -1149
  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 +2253 -1272
  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/ComponentService.sol/ComponentService.json +552 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +532 -0
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  52. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  53. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  54. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  55. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  56. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  57. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  58. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  59. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  60. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IRisk.sol/IRisk.json} +2 -2
  62. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  63. package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → ISetup.sol/ISetup.json} +2 -2
  64. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  65. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +968 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1093 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1732 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +556 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +630 -0
  86. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +1013 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +540 -0
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +205 -153
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +139 -232
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1021 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +689 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +503 -178
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +657 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +401 -309
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +890 -0
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -101
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1177 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  129. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  133. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +38 -74
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +100 -33
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  139. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/service/ServiceBase.sol/ServiceBase.json → shared/IService.sol/IService.json} +121 -152
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +256 -25
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  154. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/Service.sol/Service.json} +220 -159
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.json +30 -6
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +272 -26
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +44 -10
  168. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestService.sol/TestService.json +279 -165
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +14 -18
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +37 -163
  176. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  177. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  178. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  181. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  186. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  188. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  190. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +78 -4
  192. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  194. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  198. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  200. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  202. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  204. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  206. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  212. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  213. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  214. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  216. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  217. package/artifacts/contracts/types/Version.sol/VersionLib.json +101 -2
  218. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  220. package/contracts/components/Component.sol +251 -0
  221. package/contracts/components/Distribution.sol +280 -0
  222. package/contracts/components/IComponent.sol +74 -0
  223. package/contracts/components/IDistributionComponent.sol +71 -0
  224. package/contracts/components/IPoolComponent.sol +98 -42
  225. package/contracts/components/IProductComponent.sol +30 -9
  226. package/contracts/components/Pool.sol +232 -107
  227. package/contracts/components/Product.sol +218 -42
  228. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  229. package/contracts/instance/BundleManager.sol +127 -0
  230. package/contracts/instance/Cloneable.sol +51 -0
  231. package/contracts/instance/IInstance.sol +84 -36
  232. package/contracts/instance/IInstanceService.sol +72 -0
  233. package/contracts/instance/Instance.sol +310 -45
  234. package/contracts/instance/InstanceAccessManager.sol +522 -0
  235. package/contracts/instance/InstanceReader.sol +290 -0
  236. package/contracts/instance/InstanceService.sol +495 -0
  237. package/contracts/instance/InstanceServiceManager.sol +54 -0
  238. package/contracts/instance/ObjectManager.sol +82 -0
  239. package/contracts/instance/base/ComponentService.sol +134 -0
  240. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  241. package/contracts/instance/base/ILifecycle.sol +30 -0
  242. package/contracts/instance/base/KeyValueStore.sol +175 -0
  243. package/contracts/instance/base/Lifecycle.sol +109 -0
  244. package/contracts/instance/module/IAccess.sol +54 -0
  245. package/contracts/instance/module/IBundle.sol +21 -0
  246. package/contracts/instance/module/IComponents.sol +35 -0
  247. package/contracts/instance/module/IDistribution.sol +41 -0
  248. package/contracts/instance/module/IPolicy.sol +72 -0
  249. package/contracts/instance/module/IRisk.sol +11 -0
  250. package/contracts/instance/module/ISetup.sol +33 -0
  251. package/contracts/instance/module/ITreasury.sol +23 -0
  252. package/contracts/instance/service/ApplicationService.sol +350 -0
  253. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  254. package/contracts/instance/service/BundleService.sol +336 -0
  255. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  256. package/contracts/instance/service/ClaimService.sol +151 -0
  257. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  258. package/contracts/instance/service/DistributionService.sol +467 -0
  259. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  260. package/contracts/instance/service/IApplicationService.sol +82 -0
  261. package/contracts/instance/service/IBundleService.sol +62 -0
  262. package/contracts/instance/service/IClaimService.sol +61 -0
  263. package/contracts/instance/service/IDistributionService.sol +98 -0
  264. package/contracts/instance/service/IPolicyService.sol +72 -0
  265. package/contracts/instance/service/IPoolService.sol +22 -17
  266. package/contracts/instance/service/IProductService.sol +21 -39
  267. package/contracts/instance/service/PolicyService.sol +403 -0
  268. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  269. package/contracts/instance/service/PoolService.sol +189 -67
  270. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  271. package/contracts/instance/service/ProductService.sol +179 -296
  272. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  273. package/contracts/registry/ChainNft.sol +87 -36
  274. package/contracts/registry/IRegistry.sol +68 -24
  275. package/contracts/registry/IRegistryService.sol +67 -0
  276. package/contracts/registry/ITransferInterceptor.sol +7 -0
  277. package/contracts/registry/Registry.sol +372 -286
  278. package/contracts/registry/RegistryAccessManager.sol +216 -0
  279. package/contracts/registry/RegistryService.sol +283 -0
  280. package/contracts/registry/RegistryServiceManager.sol +62 -0
  281. package/contracts/registry/ReleaseManager.sol +322 -0
  282. package/contracts/registry/TokenRegistry.sol +116 -0
  283. package/contracts/shared/ContractDeployerLib.sol +72 -0
  284. package/contracts/shared/ERC165.sol +14 -8
  285. package/contracts/shared/INftOwnable.sol +23 -0
  286. package/contracts/shared/IPolicyHolder.sol +26 -0
  287. package/contracts/shared/IRegisterable.sol +10 -19
  288. package/contracts/shared/IRegistryLinked.sol +12 -0
  289. package/contracts/shared/IService.sol +18 -0
  290. package/contracts/shared/IVersionable.sol +38 -37
  291. package/contracts/shared/NftOwnable.sol +120 -0
  292. package/contracts/shared/PolicyHolder.sol +81 -0
  293. package/contracts/shared/ProxyManager.sol +169 -0
  294. package/contracts/shared/Registerable.sol +54 -66
  295. package/contracts/shared/RegistryLinked.sol +48 -0
  296. package/contracts/shared/Service.sol +58 -0
  297. package/contracts/shared/TokenHandler.sol +33 -0
  298. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  299. package/contracts/shared/Versionable.sol +38 -71
  300. package/contracts/test/TestFee.sol +4 -4
  301. package/contracts/test/TestRegisterable.sol +5 -6
  302. package/contracts/test/TestRoleId.sol +2 -2
  303. package/contracts/test/TestService.sol +8 -18
  304. package/contracts/test/TestVersion.sol +4 -7
  305. package/contracts/test/TestVersionable.sol +2 -5
  306. package/contracts/test/Usdc.sol +26 -0
  307. package/contracts/types/Blocknumber.sol +1 -0
  308. package/contracts/types/ClaimId.sol +52 -0
  309. package/contracts/types/DistributorType.sol +55 -0
  310. package/contracts/types/Fee.sol +45 -20
  311. package/contracts/types/Key32.sol +50 -0
  312. package/contracts/types/NftId.sol +24 -1
  313. package/contracts/types/NftIdSet.sol +26 -24
  314. package/contracts/types/NumberId.sol +52 -0
  315. package/contracts/types/ObjectType.sol +56 -14
  316. package/contracts/types/PayoutId.sol +54 -0
  317. package/contracts/types/Referral.sol +89 -0
  318. package/contracts/types/RiskId.sol +43 -0
  319. package/contracts/types/RoleId.sol +72 -11
  320. package/contracts/types/Seconds.sol +54 -0
  321. package/contracts/types/StateId.sol +13 -2
  322. package/contracts/types/Timestamp.sol +17 -13
  323. package/contracts/types/UFixed.sol +145 -25
  324. package/contracts/types/Version.sol +43 -26
  325. package/package.json +6 -5
  326. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  327. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  328. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  331. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  333. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  335. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  337. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  339. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  341. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  343. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  345. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  348. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  350. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  352. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  354. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  356. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  358. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  359. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  360. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  361. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  362. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  363. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  364. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  365. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  366. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -313
  367. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  368. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  369. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  370. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  371. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  372. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  373. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
  374. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  376. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -276
  377. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  378. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  379. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  380. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  381. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  383. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  385. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  388. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  389. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  391. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  393. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  396. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  397. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  398. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +0 -10
  400. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.json +0 -10
  402. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  403. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -538
  405. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  406. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  407. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -538
  409. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  410. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -519
  411. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  412. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  413. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  414. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  415. package/artifacts/contracts/instance/service/IService.sol/IService.json +0 -300
  416. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  417. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  418. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  420. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  421. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  422. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  423. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  424. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  425. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  426. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  427. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  428. package/contracts/components/BaseComponent.sol +0 -89
  429. package/contracts/components/IBaseComponent.sol +0 -19
  430. package/contracts/experiment/errors/Require.sol +0 -38
  431. package/contracts/experiment/errors/Revert.sol +0 -44
  432. package/contracts/experiment/inheritance/A.sol +0 -53
  433. package/contracts/experiment/inheritance/B.sol +0 -28
  434. package/contracts/experiment/inheritance/C.sol +0 -34
  435. package/contracts/experiment/inheritance/IA.sol +0 -13
  436. package/contracts/experiment/inheritance/IB.sol +0 -10
  437. package/contracts/experiment/inheritance/IC.sol +0 -12
  438. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  439. package/contracts/experiment/statemachine/ISM.sol +0 -25
  440. package/contracts/experiment/statemachine/README.md +0 -112
  441. package/contracts/experiment/statemachine/SM.sol +0 -57
  442. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  443. package/contracts/experiment/types/TypeA.sol +0 -47
  444. package/contracts/experiment/types/TypeB.sol +0 -29
  445. package/contracts/instance/IInstanceLinked.sol +0 -8
  446. package/contracts/instance/IServiceLinked.sol +0 -12
  447. package/contracts/instance/InstanceBase.sol +0 -74
  448. package/contracts/instance/module/access/Access.sol +0 -149
  449. package/contracts/instance/module/access/IAccess.sol +0 -53
  450. package/contracts/instance/module/bundle/BundleModule.sol +0 -228
  451. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  452. package/contracts/instance/module/component/ComponentModule.sol +0 -104
  453. package/contracts/instance/module/component/IComponent.sol +0 -53
  454. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  455. package/contracts/instance/module/lifecycle/LifecycleModule.sol +0 -89
  456. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  457. package/contracts/instance/module/policy/PolicyModule.sol +0 -84
  458. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  459. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  460. package/contracts/instance/module/product/IProductModule.sol +0 -6
  461. package/contracts/instance/module/product/ProductModule.sol +0 -8
  462. package/contracts/instance/module/treasury/ITreasury.sol +0 -104
  463. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  464. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -148
  465. package/contracts/instance/service/ComponentOwnerService.sol +0 -174
  466. package/contracts/instance/service/ComponentServiceBase.sol +0 -41
  467. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  468. package/contracts/instance/service/IService.sol +0 -15
  469. package/contracts/instance/service/ServiceBase.sol +0 -39
  470. package/contracts/registry/IChainNft.sol +0 -21
  471. package/contracts/registry/IRegistryLinked.sol +0 -8
  472. package/contracts/shared/IOwnable.sol +0 -6
  473. package/contracts/test/TestPool.sol +0 -22
  474. package/contracts/test/TestProduct.sol +0 -44
@@ -0,0 +1,58 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {ObjectType, SERVICE} from "../types/ObjectType.sol";
5
+ import {NftId, zeroNftId} from "../types/NftId.sol";
6
+ import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
7
+
8
+ import {Versionable} from "./Versionable.sol";
9
+ import {IService} from "./IService.sol";
10
+ import {IVersionable} from "./IVersionable.sol";
11
+ import {Versionable} from "./Versionable.sol";
12
+ import {Registerable} from "./Registerable.sol";
13
+
14
+ import {IRegistry} from "../registry/IRegistry.sol";
15
+
16
+
17
+ /// @dev service base contract
18
+ abstract contract Service is
19
+ Registerable,
20
+ Versionable,
21
+ IService
22
+ {
23
+ function getDomain() public pure virtual override returns(ObjectType);
24
+
25
+ // version major version MUST be consistent with major version of getVersion()
26
+ function getMajorVersion() public view virtual override returns(VersionPart majorVersion) {
27
+ return VersionPartLib.toVersionPart(3);
28
+ }
29
+
30
+ // from Versionable
31
+ function getVersion()
32
+ public
33
+ pure
34
+ virtual override (IVersionable, Versionable)
35
+ returns(Version)
36
+ {
37
+ return VersionLib.toVersion(3,0,0);
38
+ }
39
+
40
+ function initializeService(
41
+ address registry,
42
+ address initialOwner
43
+ )
44
+ public
45
+ virtual
46
+ onlyInitializing()
47
+ {
48
+ initializeRegisterable(
49
+ registry,
50
+ IRegistry(registry).getNftId(),
51
+ SERVICE(),
52
+ false, // is interceptor
53
+ initialOwner,
54
+ ""); // data
55
+
56
+ registerInterface(type(IService).interfaceId);
57
+ }
58
+ }
@@ -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
+ }
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
5
+ import {TransparentUpgradeableProxy, ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
6
+
7
+ import {IVersionable} from "./IVersionable.sol";
8
+
9
+ contract UpgradableProxyWithAdmin is TransparentUpgradeableProxy {
10
+
11
+ constructor(address implementation, address initialProxyAdminOwner, bytes memory data)
12
+ TransparentUpgradeableProxy(implementation, initialProxyAdminOwner, data)
13
+ {}
14
+
15
+ function getProxyAdmin() external returns (ProxyAdmin) { return ProxyAdmin(_proxyAdmin()); }
16
+ }
@@ -1,92 +1,59 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {Blocknumber, blockNumber} from "../types/Blocknumber.sol";
5
- import {Timestamp, blockTimestamp} from "../types/Timestamp.sol";
6
- import {Version, VersionPart, zeroVersion} from "../types/Version.sol";
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
7
5
 
8
6
  import {IVersionable} from "./IVersionable.sol";
7
+ import {Version, VersionLib} from "../types/Version.sol";
9
8
 
10
- abstract contract Versionable is IVersionable {
11
9
 
12
-
13
- mapping(Version version => VersionInfo info) private _versionHistory;
14
- Version [] private _versions;
15
-
16
-
17
- // controlled activation for controller contract
10
+ abstract contract Versionable is
11
+ Initializable,
12
+ IVersionable
13
+ {
18
14
  constructor() {
19
- _activate(address(0), msg.sender);
20
- }
21
-
22
- // IMPORTANT this function needs to be implemented by each new version
23
- // and needs to call internal function call _activate()
24
- function activate(address implementation, address activatedBy)
25
- external
26
- override
27
- {
28
- _activate(implementation, activatedBy);
15
+ _disableInitializers();
29
16
  }
30
17
 
31
-
32
- // can only be called once per contract
33
- // needs bo be called inside the proxy upgrade tx
34
- function _activate(
35
- address implementation,
36
- address activatedBy
18
+ function initializeVersionable(
19
+ address activatedBy,
20
+ bytes memory data
37
21
  )
38
- internal
22
+ public
23
+ initializer
39
24
  {
40
- Version thisVersion = getVersion();
41
- require(
42
- !isActivated(thisVersion),
43
- "ERROR:VRN-001:VERSION_ALREADY_ACTIVATED"
44
- );
45
-
46
- // require increasing version number
47
- if(_versions.length > 0) {
48
- Version lastVersion = _versions[_versions.length - 1];
49
- require(
50
- thisVersion > lastVersion,
51
- "ERROR:VRN-002:VERSION_NOT_INCREASING"
52
- );
53
- }
54
-
55
- // update version history
56
- _versions.push(thisVersion);
57
- _versionHistory[thisVersion] = VersionInfo(
58
- thisVersion,
59
- implementation,
60
- activatedBy,
61
- blockNumber(),
62
- blockTimestamp()
63
- );
64
-
65
- emit LogVersionableActivated(thisVersion, implementation, activatedBy);
25
+ _initialize(activatedBy, data);
66
26
  }
67
27
 
68
-
69
- function isActivated(Version _version) public override view returns(bool) {
70
- return _versionHistory[_version].activatedIn.toInt() > 0;
28
+ function upgradeVersionable(
29
+ bytes memory data
30
+ )
31
+ external
32
+ reinitializer(VersionLib.toUint64(getVersion()))
33
+ {
34
+ _upgrade(data);
71
35
  }
72
36
 
73
-
74
37
  function getVersion() public pure virtual returns(Version);
75
38
 
76
-
77
- function getVersionCount() external view override returns(uint256) {
78
- return _versions.length;
79
- }
80
-
81
-
82
- function getVersion(uint256 idx) external view override returns(Version) {
83
- require(idx < _versions.length, "ERROR:VRN-010:INDEX_TOO_LARGE");
84
- return _versions[idx];
39
+ // IMPORTANT each version must implement this function
40
+ // each implementation MUST use onlyInitialising modifier
41
+ // each implementation MUST call intializers of all base contracts...
42
+ function _initialize(address owner, bytes memory data)
43
+ internal
44
+ onlyInitializing
45
+ virtual
46
+ {
47
+ revert();
85
48
  }
86
49
 
87
-
88
- function getVersionInfo(Version _version) external override view returns(VersionInfo memory) {
89
- require(isActivated(_version), "ERROR:VRN-020:VERSION_UNKNOWN");
90
- return _versionHistory[_version];
50
+ // IMPORTANT each version except version "1" must implement this function
51
+ // each implementation MUST use onlyInitialising modifier
52
+ function _upgrade(bytes memory data)
53
+ internal
54
+ onlyInitializing
55
+ virtual
56
+ {
57
+ revert();
91
58
  }
92
59
  }
@@ -1,8 +1,8 @@
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";
5
- import {Fee, toFee, zeroFee} from "../types/Fee.sol";
4
+ import {UFixed, UFixedLib} from "../types/UFixed.sol";
5
+ import {Fee, FeeLib} from "../types/Fee.sol";
6
6
 
7
7
  contract TestFee {
8
8
 
@@ -15,11 +15,11 @@ contract TestFee {
15
15
  pure
16
16
  returns(Fee memory fee)
17
17
  {
18
- return 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) {
22
- return zeroFee();
22
+ return FeeLib.zeroFee();
23
23
  }
24
24
 
25
25
  }
@@ -8,12 +8,11 @@ import {Registerable} from "../../contracts/shared/Registerable.sol";
8
8
 
9
9
  contract TestRegisterable is Registerable {
10
10
 
11
- constructor(address registry, NftId registryNftId)
12
- Registerable(registry, registryNftId)
11
+ constructor(address registry, NftId registryNftId, ObjectType objectType, bool isInterceptor, address initialOwner)
12
+ //Registerable(registry, registryNftId)
13
13
  // solhint-disable-next-line no-empty-blocks
14
- {}
15
-
16
- function getType() external pure override returns (ObjectType) {
17
- return TOKEN();
14
+ {
15
+ bytes memory data = "";
16
+ initializeRegisterable(registry, registryNftId, objectType, isInterceptor, initialOwner, data);
18
17
  }
19
18
  }
@@ -1,10 +1,10 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {RoleId, toRoleId, PRODUCT_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE_NAME, POOL_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
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 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,35 +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
- import {Version, toVersion, toVersionPart} from "../../contracts/types/Version.sol";
6
- import {ServiceBase} from "../../contracts/instance/service/ServiceBase.sol";
6
+ import {Version, VersionLib} from "../../contracts/types/Version.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
- contract TestService is ServiceBase {
12
+ contract TestService is Service {
12
13
 
13
14
  string public constant NAME = "TestService";
14
15
 
15
- constructor(address registry, NftId registryNftId)
16
- ServiceBase(registry, registryNftId)
16
+ constructor(address registry, NftId registryNftId, address initialOwner)
17
17
  // solhint-disable-next-line no-empty-blocks
18
- {}
19
-
20
- function getVersion()
21
- public
22
- pure
23
- virtual override (IVersionable, Versionable)
24
- returns(Version)
25
18
  {
26
- return toVersion(
27
- toVersionPart(3),
28
- toVersionPart(0),
29
- toVersionPart(0));
19
+ initializeService(registry, initialOwner);
30
20
  }
31
21
 
32
- function getName() external pure override returns(string memory name) {
33
- return NAME;
22
+ function getDomain() public pure override returns(ObjectType) {
23
+ return PRODUCT();
34
24
  }
35
25
  }
@@ -1,19 +1,16 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {Version, VersionPart, toVersion, toVersionPart, zeroVersion} from "../types/Version.sol";
4
+ import {Version, VersionPart, VersionLib} from "../types/Version.sol";
5
5
 
6
6
  contract TestVersion {
7
7
 
8
8
  function createVersion(uint major, uint minor, uint patch) external pure returns(Version) {
9
- return toVersion(
10
- toVersionPart(uint8(major)),
11
- toVersionPart(uint8(minor)),
12
- toVersionPart(uint8(patch)));
9
+ return VersionLib.toVersion(major, minor, patch);
13
10
  }
14
11
 
15
12
  function createVersionPart(uint versionPart) external pure returns(VersionPart) {
16
- return toVersionPart(uint8(versionPart));
13
+ return VersionLib.toVersionPart(uint8(versionPart));
17
14
  }
18
15
 
19
16
  function getVersionParts(Version version)
@@ -33,7 +30,7 @@ contract TestVersion {
33
30
  }
34
31
 
35
32
  function getZeroVersion() external pure returns(Version) {
36
- return zeroVersion();
33
+ return VersionLib.zeroVersion();
37
34
  }
38
35
 
39
36
  function isSameVersion(Version a, Version b) external pure returns(bool) {
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {Version, toVersion, toVersionPart} from "../../contracts/types/Version.sol";
4
+ import {Version, VersionLib} from "../../contracts/types/Version.sol";
5
5
  import {Versionable} from "../../contracts/shared/Versionable.sol";
6
6
 
7
7
  contract TestVersionable is Versionable {
@@ -12,9 +12,6 @@ contract TestVersionable is Versionable {
12
12
  virtual override
13
13
  returns(Version)
14
14
  {
15
- return toVersion(
16
- toVersionPart(3),
17
- toVersionPart(0),
18
- toVersionPart(0));
15
+ return VersionLib.toVersion(3,0,0);
19
16
  }
20
17
  }
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
+
6
+ contract USDC is ERC20 {
7
+
8
+ // https://etherscan.io/token/0xc719d010b63e5bbf2c0551872cd5316ed26acd83#readContract
9
+ string public constant NAME = "USDC - DUMMY";
10
+ string public constant SYMBOL = "USDC";
11
+ uint8 public constant DECIMALS = 6;
12
+ uint256 public constant INITIAL_SUPPLY = 10**9 * 10**DECIMALS; // 1 Billion 1'000'000'000
13
+ // decimals == 18 (openzeppelin erc20 default)
14
+ constructor()
15
+ ERC20(NAME, SYMBOL)
16
+ {
17
+ _mint(
18
+ _msgSender(),
19
+ INITIAL_SUPPLY
20
+ );
21
+ }
22
+
23
+ function decimals() public pure override returns(uint8) {
24
+ return DECIMALS;
25
+ }
26
+ }
@@ -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
+ }
@@ -1,32 +1,57 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {UFixed} from "./UFixed.sol";
4
+ import {UFixed, UFixedLib} from "./UFixed.sol";
5
5
 
6
6
  struct Fee {
7
7
  UFixed fractionalFee;
8
8
  uint256 fixedFee;
9
9
  }
10
10
 
11
- // general pure free functions
12
- /// @dev Converts the uint256 to a NftId.
13
- function toFee(
14
- UFixed fractionalFee,
15
- uint256 fixedFee
16
- ) pure returns (Fee memory fee) {
17
- return Fee(fractionalFee, fixedFee);
18
- }
11
+ library FeeLib {
19
12
 
20
- /// @dev Return the NftId zero (0)
21
- function zeroFee() pure returns (Fee memory fee) {
22
- return Fee(UFixed.wrap(0), 0);
23
- }
13
+ function calculateFee(
14
+ Fee memory fee,
15
+ uint256 amount
16
+ )
17
+ public
18
+ pure
19
+ returns (
20
+ uint256 feeAmount,
21
+ uint256 netAmount
22
+ )
23
+ {
24
+ UFixed fractionalAmount = UFixedLib.toUFixed(amount) *
25
+ fee.fractionalFee;
26
+ feeAmount = fractionalAmount.toInt() + fee.fixedFee;
27
+ netAmount = amount - feeAmount;
28
+ }
24
29
 
25
- // pure free functions for operators
26
- function feeIsSame(Fee memory a, Fee memory b) pure returns (bool isSame) {
27
- return a.fixedFee == b.fixedFee && a.fractionalFee == b.fractionalFee;
28
- }
30
+ /// @dev Converts the uint256 to a fee struct.
31
+ function toFee(
32
+ UFixed fractionalFee,
33
+ uint256 fixedFee
34
+ ) public pure returns (Fee memory fee) {
35
+ return Fee(fractionalFee, fixedFee);
36
+ }
29
37
 
30
- function feeIsZero(Fee memory fee) pure returns (bool) {
31
- return fee.fixedFee == 0 && UFixed.unwrap(fee.fractionalFee) == 0;
32
- }
38
+ /// @dev Return the percent fee struct (x%, 0)
39
+ function percentageFee(uint8 percent) public pure returns (Fee memory fee) {
40
+ return Fee(UFixedLib.toUFixed(percent, -2), 0);
41
+ }
42
+
43
+ // TODO rename to zero
44
+ /// @dev Return a zero fee struct (0, 0)
45
+ function zeroFee() public pure returns (Fee memory fee) {
46
+ return Fee(UFixed.wrap(0), 0);
47
+ }
48
+
49
+ // pure free functions for operators
50
+ function feeIsSame(Fee memory a, Fee memory b) public pure returns (bool isSame) {
51
+ return a.fixedFee == b.fixedFee && a.fractionalFee == b.fractionalFee;
52
+ }
53
+
54
+ function feeIsZero(Fee memory fee) public pure returns (bool) {
55
+ return fee.fixedFee == 0 && UFixed.unwrap(fee.fractionalFee) == 0;
56
+ }
57
+ }
@@ -0,0 +1,50 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ObjectType} from "./ObjectType.sol";
5
+
6
+ type Key32 is bytes32;
7
+ type KeyId is bytes31;
8
+
9
+ // type bindings
10
+ using {
11
+ eqKey32 as ==,
12
+ neKey32 as !=,
13
+ Key32Lib.toKeyId,
14
+ Key32Lib.toObjectType
15
+ } for Key32 global;
16
+
17
+ // @dev Returns true iff keys are identical
18
+ function eqKey32(Key32 a, Key32 b) pure returns (bool isSame) {
19
+ return Key32.unwrap(a) == Key32.unwrap(b);
20
+ }
21
+
22
+ // @dev Returns true iff keys are different
23
+ function neKey32(Key32 a, Key32 b) pure returns (bool isDifferent) {
24
+ return Key32.unwrap(a) != Key32.unwrap(b);
25
+ }
26
+
27
+ library Key32Lib {
28
+
29
+ uint8 public constant TYPE_SHIFT = 31 * 8;
30
+ uint8 public constant ID_SHIFT = uint8(32 * 8 - TYPE_SHIFT);
31
+ bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); // first byte in bytes32
32
+ bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); // remaining bytes in bytes32
33
+
34
+ function toKey32(ObjectType objectType, KeyId id) public pure returns (Key32) {
35
+ uint256 uintObjectType = ObjectType.unwrap(objectType);
36
+ uint256 uintId = uint248(KeyId.unwrap(id));
37
+ uint256 uintKey = (uintObjectType << TYPE_SHIFT) + uintId;
38
+ return Key32.wrap(bytes32(uintKey));
39
+ }
40
+
41
+ function toObjectType(Key32 key) public pure returns (ObjectType objectType) {
42
+ bytes32 key32 = Key32.unwrap(key);
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);
48
+ id = KeyId.wrap(bytes31((key32 & ID_MASK) << ID_SHIFT));
49
+ }
50
+ }