@etherisc/gif-next 0.0.2-cf606cd → 0.0.2-d288ca9-933

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 (372) hide show
  1. package/README.md +291 -7
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → components/BaseComponent.sol/BaseComponent.json} +149 -162
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +610 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/component/IComponent.sol/IComponentModule.json → components/IBaseComponent.sol/IBaseComponent.json} +129 -107
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +249 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +157 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +598 -37
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +570 -47
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  26. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  28. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  30. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  32. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
  39. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
  40. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
  41. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
  42. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
  43. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
  44. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
  45. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
  46. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
  47. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
  48. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  49. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  50. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  51. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  52. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  53. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +114 -0
  54. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  55. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
  56. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  57. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +247 -788
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +421 -0
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +2994 -550
  64. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +930 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1283 -0
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +724 -0
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +432 -0
  72. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +481 -0
  74. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  76. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  78. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  80. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/IService.sol/IService.json +421 -0
  82. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  84. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  86. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  87. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +468 -0
  88. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  90. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  92. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  94. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  95. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  96. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  98. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  99. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/ISetup.sol/ISetup.json} +2 -2
  100. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +10 -0
  102. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +827 -0
  104. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +466 -0
  106. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +446 -0
  108. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +561 -0
  110. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +751 -0
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +249 -84
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +872 -0
  118. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  120. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/Registry.sol/Registry.json +451 -85
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1261 -0
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +504 -0
  126. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  130. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  132. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  133. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +201 -0
  134. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  137. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  138. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  139. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  140. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  141. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +274 -0
  142. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  143. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  145. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  146. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +228 -0
  148. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  149. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  150. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  151. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +305 -0
  152. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  153. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  154. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  155. package/artifacts/contracts/test/TestService.sol/TestService.json +600 -0
  156. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  157. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  158. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  159. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  160. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  161. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +286 -0
  162. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  163. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  164. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  165. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  166. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  168. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  170. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  171. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  172. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  173. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  174. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  175. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  176. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  178. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  179. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  180. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  182. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  184. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  186. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  188. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  190. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  192. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +77 -2
  194. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  196. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  198. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  200. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  202. package/contracts/components/BaseComponent.sol +86 -0
  203. package/contracts/components/Distribution.sol +166 -0
  204. package/contracts/components/IBaseComponent.sol +24 -0
  205. package/contracts/components/IDistributionComponent.sol +43 -0
  206. package/contracts/components/IPoolComponent.sol +62 -0
  207. package/contracts/components/IProductComponent.sol +35 -0
  208. package/contracts/components/Pool.sol +248 -18
  209. package/contracts/components/Product.sol +267 -36
  210. package/contracts/experiment/cloning/Cloner.sol +47 -0
  211. package/contracts/experiment/errors/Require.sol +10 -5
  212. package/contracts/experiment/errors/Revert.sol +13 -8
  213. package/contracts/experiment/inheritance/A.sol +8 -11
  214. package/contracts/experiment/inheritance/B.sol +10 -5
  215. package/contracts/experiment/inheritance/C.sol +11 -5
  216. package/contracts/experiment/inheritance/IA.sol +2 -7
  217. package/contracts/experiment/inheritance/IB.sol +3 -2
  218. package/contracts/experiment/inheritance/IC.sol +4 -3
  219. package/contracts/experiment/statemachine/Dummy.sol +27 -0
  220. package/contracts/experiment/statemachine/ISM.sol +25 -0
  221. package/contracts/experiment/statemachine/SM.sol +57 -0
  222. package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
  223. package/contracts/experiment/types/TypeA.sol +14 -9
  224. package/contracts/experiment/types/TypeB.sol +14 -9
  225. package/contracts/instance/AccessManagedSimple.sol +122 -0
  226. package/contracts/instance/AccessManagerSimple.sol +692 -0
  227. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  228. package/contracts/instance/IInstance.sol +23 -15
  229. package/contracts/instance/IInstanceService.sol +17 -0
  230. package/contracts/instance/Instance.sol +422 -44
  231. package/contracts/instance/InstanceAccessManager.sol +288 -0
  232. package/contracts/instance/InstanceReader.sol +290 -0
  233. package/contracts/instance/InstanceService.sol +136 -0
  234. package/contracts/instance/InstanceServiceManager.sol +56 -0
  235. package/contracts/instance/base/ComponentServiceBase.sol +49 -0
  236. package/contracts/instance/base/IInstanceBase.sol +23 -0
  237. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  238. package/contracts/instance/base/ILifecycle.sol +30 -0
  239. package/contracts/instance/base/IService.sol +15 -0
  240. package/contracts/instance/base/KeyValueStore.sol +172 -0
  241. package/contracts/instance/base/Lifecycle.sol +100 -0
  242. package/contracts/instance/base/ServiceBase.sol +44 -0
  243. package/contracts/instance/module/IAccess.sol +38 -0
  244. package/contracts/instance/module/IBundle.sol +19 -0
  245. package/contracts/instance/module/IDistribution.sol +39 -0
  246. package/contracts/instance/module/IPolicy.sol +45 -0
  247. package/contracts/instance/module/IRisk.sol +11 -0
  248. package/contracts/instance/module/ISetup.sol +43 -0
  249. package/contracts/instance/module/ITreasury.sol +23 -0
  250. package/contracts/instance/service/ComponentOwnerService.sol +317 -0
  251. package/contracts/instance/service/IComponentOwnerService.sol +20 -0
  252. package/contracts/instance/service/IDistributionService.sol +12 -0
  253. package/contracts/instance/service/IPoolService.sol +37 -0
  254. package/contracts/instance/service/IProductService.sol +107 -0
  255. package/contracts/registry/ChainNft.sol +138 -109
  256. package/contracts/registry/IRegistry.sol +43 -56
  257. package/contracts/registry/IRegistryService.sol +35 -0
  258. package/contracts/registry/ITransferInterceptor.sol +6 -0
  259. package/contracts/registry/Registry.sol +363 -122
  260. package/contracts/registry/RegistryService.sol +439 -0
  261. package/contracts/registry/RegistryServiceManager.sol +64 -0
  262. package/contracts/shared/ContractDeployerLib.sol +72 -0
  263. package/contracts/shared/ERC165.sol +21 -0
  264. package/contracts/shared/INftOwnable.sol +22 -0
  265. package/contracts/shared/IRegisterable.sol +17 -0
  266. package/contracts/shared/IVersionable.sol +96 -0
  267. package/contracts/shared/NftOwnable.sol +136 -0
  268. package/contracts/shared/ProxyManager.sol +94 -0
  269. package/contracts/shared/Registerable.sol +89 -0
  270. package/contracts/shared/TokenHandler.sol +27 -0
  271. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  272. package/contracts/shared/Versionable.sol +147 -0
  273. package/contracts/test/TestFee.sol +25 -0
  274. package/contracts/test/TestRegisterable.sol +18 -0
  275. package/contracts/test/TestRoleId.sol +14 -0
  276. package/contracts/test/TestService.sol +26 -0
  277. package/contracts/test/TestToken.sol +26 -0
  278. package/contracts/test/TestVersion.sol +44 -0
  279. package/contracts/test/TestVersionable.sol +17 -0
  280. package/contracts/test/Usdc.sol +26 -0
  281. package/contracts/types/AddressSet.sol +58 -0
  282. package/contracts/types/Blocknumber.sol +76 -18
  283. package/contracts/types/ChainId.sol +18 -10
  284. package/contracts/types/DistributorType.sol +55 -0
  285. package/contracts/types/Fee.sol +56 -0
  286. package/contracts/types/Key32.sol +50 -0
  287. package/contracts/types/NftId.sol +48 -11
  288. package/contracts/types/NftIdSet.sol +60 -0
  289. package/contracts/types/NumberId.sol +52 -0
  290. package/contracts/types/ObjectType.sol +152 -0
  291. package/contracts/types/Referral.sol +85 -0
  292. package/contracts/types/RiskId.sol +43 -0
  293. package/contracts/types/RoleId.sol +82 -0
  294. package/contracts/types/StateId.sol +101 -0
  295. package/contracts/types/Timestamp.sol +89 -17
  296. package/contracts/types/UFixed.sol +189 -75
  297. package/contracts/types/Version.sol +104 -0
  298. package/package.json +21 -6
  299. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  300. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  301. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  302. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  303. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  304. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  305. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  306. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  307. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  308. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  309. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  310. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  311. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  312. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  313. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  314. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  315. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  316. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  317. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  318. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  319. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  320. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  321. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  322. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  323. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  324. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  325. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  326. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  327. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  328. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  329. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  330. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  331. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  332. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  333. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  334. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  335. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  336. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  337. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  338. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  339. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  340. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  341. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  342. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  343. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  344. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  345. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  346. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  347. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  348. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  349. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  350. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  351. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  352. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  353. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  354. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  355. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  356. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  357. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  358. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  359. package/contracts/components/Component.sol +0 -62
  360. package/contracts/components/IPool.sol +0 -9
  361. package/contracts/components/IProduct.sol +0 -12
  362. package/contracts/instance/access/Access.sol +0 -218
  363. package/contracts/instance/access/IAccess.sol +0 -83
  364. package/contracts/instance/component/ComponentModule.sol +0 -248
  365. package/contracts/instance/component/IComponent.sol +0 -95
  366. package/contracts/instance/policy/IPolicy.sol +0 -66
  367. package/contracts/instance/policy/PolicyModule.sol +0 -107
  368. package/contracts/instance/pool/IPoolModule.sol +0 -41
  369. package/contracts/instance/pool/PoolModule.sol +0 -86
  370. package/contracts/instance/product/IProductService.sol +0 -46
  371. package/contracts/instance/product/ProductService.sol +0 -108
  372. package/contracts/registry/IChainNft.sol +0 -18
@@ -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
+ }
@@ -0,0 +1,152 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ type ObjectType is uint8;
5
+
6
+ // type bindings
7
+ using {
8
+ eqObjectType as ==,
9
+ neObjectType as !=,
10
+ ObjectTypeLib.toInt,
11
+ ObjectTypeLib.gtz
12
+ } for ObjectType global;
13
+
14
+ // general pure free functions
15
+
16
+ function PROTOCOL() pure returns (ObjectType) {
17
+ return toObjectType(10);
18
+ }
19
+
20
+ function ROLE() pure returns (ObjectType) {
21
+ return toObjectType(20);
22
+ }
23
+
24
+ function TARGET() pure returns (ObjectType) {
25
+ return toObjectType(30);
26
+ }
27
+
28
+ function REGISTRY() pure returns (ObjectType) {
29
+ return toObjectType(40);
30
+ }
31
+
32
+ function TOKEN() pure returns (ObjectType) {
33
+ return toObjectType(50);
34
+ }
35
+
36
+ function SERVICE() pure returns (ObjectType) {
37
+ return toObjectType(60);
38
+ }
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
+
48
+ function COMPONENT() pure returns (ObjectType) {
49
+ return toObjectType(100);
50
+ }
51
+
52
+ // TODO replace by PRODUCT_SETUP
53
+ function TREASURY() pure returns (ObjectType) {
54
+ return toObjectType(101);
55
+ }
56
+
57
+ function PRODUCT_SETUP() pure returns (ObjectType) {
58
+ return toObjectType(101);
59
+ }
60
+
61
+ function PRODUCT() pure returns (ObjectType) {
62
+ return toObjectType(110);
63
+ }
64
+
65
+ function DISTRIBUTION() pure returns (ObjectType) {
66
+ return toObjectType(120);
67
+ }
68
+
69
+ function DISTRIBUTION_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
+
81
+ function ORACLE() pure returns (ObjectType) {
82
+ return toObjectType(130);
83
+ }
84
+
85
+ function POOL() pure returns (ObjectType) {
86
+ return toObjectType(140);
87
+ }
88
+
89
+ function RISK() pure returns (ObjectType) {
90
+ return toObjectType(200);
91
+ }
92
+
93
+ function POLICY() pure returns (ObjectType) {
94
+ return toObjectType(210);
95
+ }
96
+
97
+ function BUNDLE() pure returns (ObjectType) {
98
+ return toObjectType(220);
99
+ }
100
+
101
+ function CLAIM() pure returns (ObjectType) {
102
+ return toObjectType(211);
103
+ }
104
+
105
+ function PAYOUT() pure returns (ObjectType) {
106
+ return toObjectType(212);
107
+ }
108
+
109
+ /// @dev Converts the uint8 to a ObjectType.
110
+ function toObjectType(uint256 objectType) pure returns (ObjectType) {
111
+ return ObjectType.wrap(uint8(objectType));
112
+ }
113
+
114
+ /// @dev Return the ObjectType zero (0)
115
+ function zeroObjectType() pure returns (ObjectType) {
116
+ return ObjectType.wrap(0);
117
+ }
118
+
119
+ // pure free functions for operators
120
+ function eqObjectType(ObjectType a, ObjectType b) pure returns (bool isSame) {
121
+ return ObjectType.unwrap(a) == ObjectType.unwrap(b);
122
+ }
123
+
124
+ function neObjectType(
125
+ ObjectType a,
126
+ ObjectType b
127
+ ) pure returns (bool isDifferent) {
128
+ return ObjectType.unwrap(a) != ObjectType.unwrap(b);
129
+ }
130
+
131
+ // library functions that operate on user defined type
132
+ library ObjectTypeLib {
133
+ /// @dev Converts the NftId to a uint256.
134
+ function toInt(ObjectType objectType) public pure returns (uint96) {
135
+ return uint96(ObjectType.unwrap(objectType));
136
+ }
137
+
138
+ /// @dev Returns true if the value is non-zero (> 0).
139
+ function gtz(ObjectType a) public pure returns (bool) {
140
+ return ObjectType.unwrap(a) > 0;
141
+ }
142
+
143
+ /// @dev Returns true if the value is zero (== 0).
144
+ function eqz(ObjectType a) public pure returns (bool) {
145
+ return ObjectType.unwrap(a) == 0;
146
+ }
147
+
148
+ /// @dev Returns true if the values are equal (==).
149
+ function eq(ObjectType a, ObjectType b) public pure returns (bool isSame) {
150
+ return eqObjectType(a, b);
151
+ }
152
+ }
@@ -0,0 +1,85 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {NftId} from "./NftId.sol";
6
+ import {REFERRAL} from "./ObjectType.sol";
7
+
8
+ type ReferralId is bytes8;
9
+ type ReferralStatus is uint8;
10
+
11
+ // type bindings
12
+ using {
13
+ eqReferralId as ==,
14
+ neReferralId as !=,
15
+ ReferralLib.toKey32
16
+ } for ReferralId global;
17
+
18
+ using {
19
+ eqReferralStatus as ==,
20
+ neReferralStatus as !=
21
+ } for ReferralStatus global;
22
+
23
+ // general pure free functions
24
+
25
+ // @dev Returns true iff a and b are identical
26
+ function eqReferralId(ReferralId a, ReferralId b) pure returns (bool isSame) {
27
+ return ReferralId.unwrap(a) == ReferralId.unwrap(b);
28
+ }
29
+
30
+ // @dev Returns true iff a and b are different
31
+ function neReferralId(ReferralId a, ReferralId b) pure returns (bool isDifferent) {
32
+ return ReferralId.unwrap(a) != ReferralId.unwrap(b);
33
+ }
34
+
35
+ // @dev Returns true iff a and b are identical
36
+ function eqReferralStatus(ReferralStatus a, ReferralStatus b) pure returns (bool isSame) {
37
+ return ReferralStatus.unwrap(a) == ReferralStatus.unwrap(b);
38
+ }
39
+
40
+ // @dev Returns true iff a and b are different
41
+ function neReferralStatus(ReferralStatus a, ReferralStatus b) pure returns (bool isDifferent) {
42
+ return ReferralStatus.unwrap(a) != ReferralStatus.unwrap(b);
43
+ }
44
+
45
+ function REFERRAL_OK() pure returns (ReferralStatus) {
46
+ return ReferralStatus.wrap(10);
47
+ }
48
+
49
+ function REFERRAL_ERROR_UNKNOWN() pure returns (ReferralStatus) {
50
+ return ReferralStatus.wrap(100);
51
+ }
52
+
53
+ function REFERRAL_ERROR_EXPIRED() pure returns (ReferralStatus) {
54
+ return ReferralStatus.wrap(110);
55
+ }
56
+
57
+ function REFERRAL_ERROR_EXHAUSTED() pure returns (ReferralStatus) {
58
+ return ReferralStatus.wrap(120);
59
+ }
60
+
61
+ library ReferralLib {
62
+
63
+ function zero() public pure returns (ReferralId) {
64
+ return ReferralId.wrap(bytes8(0));
65
+ }
66
+
67
+ // @dev Converts a referral string into an id.
68
+ function toReferralId(NftId distributionNftId, string memory referral) public pure returns (ReferralId) {
69
+ return ReferralId.wrap(bytes8(keccak256(abi.encode(distributionNftId, referral))));
70
+ }
71
+
72
+ function toReferralStatus(uint8 status) public pure returns (ReferralStatus) {
73
+ return ReferralStatus.wrap(status);
74
+ }
75
+
76
+ /// @dev Returns the key32 value for the specified nft id and object type.
77
+ function toKey32(ReferralId id) public pure returns (Key32 key) {
78
+ return Key32Lib.toKey32(REFERRAL(), toKeyId(id));
79
+ }
80
+
81
+ /// @dev Returns the key id value for the specified nft id
82
+ function toKeyId(ReferralId id) public pure returns (KeyId keyId) {
83
+ return KeyId.wrap(bytes31(ReferralId.unwrap(id)));
84
+ }
85
+ }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {RISK} from "./ObjectType.sol";
6
+
7
+ type RiskId is bytes8;
8
+
9
+ // type bindings
10
+ using {
11
+ eqRiskId as ==,
12
+ neRiskId as !=,
13
+ RiskIdLib.toKey32
14
+ } for RiskId global;
15
+
16
+ // general pure free functions
17
+
18
+ // @dev Returns true iff risk ids a and b are identical
19
+ function eqRiskId(RiskId a, RiskId b) pure returns (bool isSame) {
20
+ return RiskId.unwrap(a) == RiskId.unwrap(b);
21
+ }
22
+
23
+ // @dev Returns true iff risk ids a and b are different
24
+ function neRiskId(RiskId a, RiskId b) pure returns (bool isDifferent) {
25
+ return RiskId.unwrap(a) != RiskId.unwrap(b);
26
+ }
27
+
28
+ library RiskIdLib {
29
+ // @dev Converts a role string into a role id.
30
+ function toRiskId(string memory risk) public pure returns (RiskId) {
31
+ return RiskId.wrap(bytes8(keccak256(abi.encode(risk))));
32
+ }
33
+
34
+ /// @dev Returns the key32 value for the specified nft id and object type.
35
+ function toKey32(RiskId id) public pure returns (Key32 key) {
36
+ return Key32Lib.toKey32(RISK(), toKeyId(id));
37
+ }
38
+
39
+ /// @dev Returns the key id value for the specified nft id
40
+ function toKeyId(RiskId id) public pure returns (KeyId keyId) {
41
+ return KeyId.wrap(bytes31(RiskId.unwrap(id)));
42
+ }
43
+ }
@@ -0,0 +1,82 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {ROLE} from "./ObjectType.sol";
6
+
7
+ type RoleId is uint64;
8
+
9
+ // type bindings
10
+ using {
11
+ eqRoleId as ==,
12
+ neRoleId as !=,
13
+ RoleIdLib.eqz,
14
+ RoleIdLib.gtz,
15
+ RoleIdLib.toInt,
16
+ RoleIdLib.toKey32
17
+ } for RoleId global;
18
+
19
+ // general pure free functions
20
+ function DISTRIBUTION_OWNER_ROLE_NAME() pure returns (string memory) { return "DistributionOwnerRole"; }
21
+ function ORACLE_OWNER_ROLE_NAME() pure returns (string memory) { return "OracleOwnerRole"; }
22
+ function POOL_OWNER_ROLE_NAME() pure returns (string memory) { return "PoolOwnerRole"; }
23
+ function PRODUCT_OWNER_ROLE_NAME() pure returns (string memory) { return "ProductOwnerRole"; }
24
+
25
+ // TODO correct numbers (maybe they are already defined in RegistryService)
26
+ function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(100); }
27
+ function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(200); }
28
+ function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(300); }
29
+ function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(400); }
30
+
31
+ function DISTRIBUTION_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1000); }
32
+ function POLICY_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1100); }
33
+ function BUNDLE_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1200); }
34
+ function POOL_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1300); }
35
+ function PRODUCT_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1400); }
36
+
37
+ // @dev Returns true iff role ids a and b are identical
38
+ function eqRoleId(RoleId a, RoleId b) pure returns (bool isSame) {
39
+ return RoleId.unwrap(a) == RoleId.unwrap(b);
40
+ }
41
+
42
+ // @dev Returns true iff role ids a and b are different
43
+ function neRoleId(RoleId a, RoleId b) pure returns (bool isDifferent) {
44
+ return RoleId.unwrap(a) != RoleId.unwrap(b);
45
+ }
46
+
47
+ library RoleIdLib {
48
+ /// @dev Converts the RoleId to a uint.
49
+ function zero() public pure returns (RoleId) {
50
+ return RoleId.wrap(0);
51
+ }
52
+
53
+ /// @dev Converts an uint into a RoleId.
54
+ function toRoleId(uint256 a) public pure returns (RoleId) {
55
+ return RoleId.wrap(uint64(a));
56
+ }
57
+
58
+ /// @dev Converts the RoleId to a uint.
59
+ function toInt(RoleId a) public pure returns (uint64) {
60
+ return uint64(RoleId.unwrap(a));
61
+ }
62
+
63
+ /// @dev Returns true if the value is non-zero (> 0).
64
+ function gtz(RoleId a) public pure returns (bool) {
65
+ return RoleId.unwrap(a) > 0;
66
+ }
67
+
68
+ /// @dev Returns true if the value is zero (== 0).
69
+ function eqz(RoleId a) public pure returns (bool) {
70
+ return RoleId.unwrap(a) == 0;
71
+ }
72
+
73
+ /// @dev Returns the key32 value for the specified id and object type.
74
+ function toKey32(RoleId a) public pure returns (Key32 key) {
75
+ return Key32Lib.toKey32(ROLE(), toKeyId(a));
76
+ }
77
+
78
+ /// @dev Returns the key id value for the specified id
79
+ function toKeyId(RoleId a) public pure returns (KeyId keyId) {
80
+ return KeyId.wrap(bytes31(uint248(RoleId.unwrap(a))));
81
+ }
82
+ }
@@ -0,0 +1,101 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ // uint96 allows for chain ids up to 13 digits
5
+ type StateId is uint8;
6
+
7
+ // type bindings
8
+ using {
9
+ eqStateId as ==,
10
+ neStateId as !=,
11
+ StateIdLib.eqz,
12
+ StateIdLib.gtz,
13
+ StateIdLib.toInt
14
+ } for StateId global;
15
+
16
+ // general pure free functions
17
+ function APPLIED() pure returns (StateId) {
18
+ return toStateId(10);
19
+ }
20
+
21
+ function REVOKED() pure returns (StateId) {
22
+ return toStateId(20);
23
+ }
24
+
25
+ function DECLINED() pure returns (StateId) {
26
+ return toStateId(30);
27
+ }
28
+
29
+ function UNDERWRITTEN() pure returns (StateId) {
30
+ return toStateId(40);
31
+ }
32
+
33
+ function CONFIRMED() pure returns (StateId) {
34
+ return toStateId(50);
35
+ }
36
+
37
+ function EXPECTED() pure returns (StateId) {
38
+ return toStateId(60);
39
+ }
40
+
41
+ function ACTIVE() pure returns (StateId) {
42
+ return toStateId(100);
43
+ }
44
+
45
+ function PAUSED() pure returns (StateId) {
46
+ return toStateId(110);
47
+ }
48
+
49
+ function CLOSED() pure returns (StateId) {
50
+ return toStateId(200);
51
+ }
52
+
53
+ function ARCHIVED() pure returns (StateId) {
54
+ return toStateId(210);
55
+ }
56
+
57
+ function PAID() pure returns (StateId) {
58
+ return toStateId(220);
59
+ }
60
+
61
+ /// @dev Converts the uint8 to a StateId.
62
+ function toStateId(uint256 id) pure returns (StateId) {
63
+ return StateId.wrap(uint8(id));
64
+ }
65
+
66
+ /// @dev Return the StateId zero (0)
67
+ function zeroStateId() pure returns (StateId) {
68
+ return StateId.wrap(0);
69
+ }
70
+
71
+ // pure free functions for operators
72
+ function eqStateId(StateId a, StateId b) pure returns (bool isSame) {
73
+ return StateId.unwrap(a) == StateId.unwrap(b);
74
+ }
75
+
76
+ function neStateId(StateId a, StateId b) pure returns (bool isDifferent) {
77
+ return StateId.unwrap(a) != StateId.unwrap(b);
78
+ }
79
+
80
+ // library functions that operate on user defined type
81
+ library StateIdLib {
82
+ /// @dev Converts the NftId to a uint256.
83
+ function toInt(StateId stateId) public pure returns (uint96) {
84
+ return uint96(StateId.unwrap(stateId));
85
+ }
86
+
87
+ /// @dev Returns true if the value is non-zero (> 0).
88
+ function gtz(StateId a) public pure returns (bool) {
89
+ return StateId.unwrap(a) > 0;
90
+ }
91
+
92
+ /// @dev Returns true if the value is zero (== 0).
93
+ function eqz(StateId a) public pure returns (bool) {
94
+ return StateId.unwrap(a) == 0;
95
+ }
96
+
97
+ /// @dev Returns true if the values are equal (==).
98
+ function eq(StateId a, StateId b) public pure returns (bool isSame) {
99
+ return eqStateId(a, b);
100
+ }
101
+ }
@@ -9,47 +9,119 @@ using {
9
9
  ltTimestamp as <,
10
10
  lteTimestamp as <=,
11
11
  eqTimestamp as ==,
12
- neTimestamp as !=
12
+ neTimestamp as !=,
13
+ TimestampLib.gtz,
14
+ TimestampLib.eqz,
15
+ TimestampLib.addSeconds
13
16
  } for Timestamp global;
14
17
 
15
18
  /// @dev return true if Timestamp a is after Timestamp b
16
- function gtTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) > Timestamp.unwrap(b); }
19
+ function gtTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
20
+ return Timestamp.unwrap(a) > Timestamp.unwrap(b);
21
+ }
22
+
17
23
  /// @dev return true if Timestamp a is after or equal to Timestamp b
18
- function gteTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) >= Timestamp.unwrap(b); }
24
+ function gteTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
25
+ return Timestamp.unwrap(a) >= Timestamp.unwrap(b);
26
+ }
19
27
 
20
28
  /// @dev return true if Timestamp a is before Timestamp b
21
- function ltTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) < Timestamp.unwrap(b); }
29
+ function ltTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
30
+ return Timestamp.unwrap(a) < Timestamp.unwrap(b);
31
+ }
32
+
22
33
  /// @dev return true if Timestamp a is before or equal to Timestamp b
23
- function lteTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) <= Timestamp.unwrap(b); }
34
+ function lteTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
35
+ return Timestamp.unwrap(a) <= Timestamp.unwrap(b);
36
+ }
24
37
 
25
38
  /// @dev return true if Timestamp a is equal to Timestamp b
26
- function eqTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) == Timestamp.unwrap(b); }
39
+ function eqTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
40
+ return Timestamp.unwrap(a) == Timestamp.unwrap(b);
41
+ }
42
+
27
43
  /// @dev return true if Timestamp a is not equal to Timestamp b
28
- function neTimestamp(Timestamp a, Timestamp b) pure returns(bool) { return Timestamp.unwrap(a) != Timestamp.unwrap(b); }
44
+ function neTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
45
+ return Timestamp.unwrap(a) != Timestamp.unwrap(b);
46
+ }
29
47
 
30
48
  /// @dev Converts the uint256 to a Timestamp.
31
- function toTimestamp(uint256 timestamp) pure returns(Timestamp) { return Timestamp.wrap(uint40(timestamp));}
49
+ function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
50
+ return Timestamp.wrap(uint40(timestamp));
51
+ }
32
52
 
33
- function blockTimestamp() view returns(Timestamp) { return toTimestamp(block.timestamp); }
53
+ // function blockTimestamp() view returns (Timestamp) {
54
+ // return toTimestamp(block.timestamp);
55
+ // }
34
56
 
35
57
  /// @dev Return the Timestamp zero (0)
36
- function zeroTimestamp() pure returns(Timestamp) { return toTimestamp(0); }
58
+ function zeroTimestamp() pure returns (Timestamp) {
59
+ return toTimestamp(0);
60
+ }
37
61
 
38
62
  library TimestampLib {
63
+ function blockTimestamp() public view returns (Timestamp) {
64
+ return Timestamp.wrap(uint40(block.timestamp));
65
+ }
66
+
39
67
  /// @dev return true if Timestamp a is after Timestamp b
40
- function gt(Timestamp a, Timestamp b) public pure returns(bool isAfter) { return gtTimestamp(a, b); }
68
+ function gt(Timestamp a, Timestamp b) public pure returns (bool isAfter) {
69
+ return gtTimestamp(a, b);
70
+ }
71
+
41
72
  /// @dev return true if Timestamp a is after or the same than Timestamp b
42
- function gte(Timestamp a, Timestamp b) public pure returns(bool isAfterOrSame) { return gteTimestamp(a, b); }
73
+ function gte(
74
+ Timestamp a,
75
+ Timestamp b
76
+ ) public pure returns (bool isAfterOrSame) {
77
+ return gteTimestamp(a, b);
78
+ }
43
79
 
44
80
  /// @dev return true if Timestamp a is before Timestamp b
45
- function lt(Timestamp a, Timestamp b) public pure returns(bool isBefore) { return ltTimestamp(a, b); }
81
+ function lt(Timestamp a, Timestamp b) public pure returns (bool isBefore) {
82
+ return ltTimestamp(a, b);
83
+ }
84
+
46
85
  /// @dev return true if Timestamp a is before or the same than Timestamp b
47
- function lte(Timestamp a, Timestamp b) public pure returns(bool isBeforeOrSame) { return lteTimestamp(a, b); }
86
+ function lte(
87
+ Timestamp a,
88
+ Timestamp b
89
+ ) public pure returns (bool isBeforeOrSame) {
90
+ return lteTimestamp(a, b);
91
+ }
48
92
 
49
93
  /// @dev return true if Timestamp a is equal to Timestamp b
50
- function eq(Timestamp a, Timestamp b) public pure returns(bool isSame) { return eqTimestamp(a, b); }
94
+ function eq(Timestamp a, Timestamp b) public pure returns (bool isSame) {
95
+ return eqTimestamp(a, b);
96
+ }
97
+
98
+ /// @dev return true if Timestamp a is not equal to Timestamp b
99
+ function ne(
100
+ Timestamp a,
101
+ Timestamp b
102
+ ) public pure returns (bool isDifferent) {
103
+ return neTimestamp(a, b);
104
+ }
105
+
106
+ /// @dev return true if Timestamp is larger than 0
107
+ function gtz(Timestamp timestamp) public pure returns (bool) {
108
+ return Timestamp.unwrap(timestamp) > 0;
109
+ }
110
+
111
+ /// @dev return true if Timestamp equals 0
112
+ function eqz(Timestamp timestamp) public pure returns (bool) {
113
+ return Timestamp.unwrap(timestamp) == 0;
114
+ }
115
+
51
116
  /// @dev return true if Timestamp a is not equal to Timestamp b
52
- function ne(Timestamp a, Timestamp b) public pure returns(bool isDifferent) { return neTimestamp(a, b); }
117
+ function addSeconds(
118
+ Timestamp timestamp,
119
+ uint256 timeDelta
120
+ ) public pure returns (Timestamp) {
121
+ return toTimestamp(Timestamp.unwrap(timestamp) + uint40(timeDelta));
122
+ }
53
123
 
54
- function toInt(Timestamp timestamp) public pure returns(uint256) { return uint256(uint40(Timestamp.unwrap(timestamp))); }
124
+ function toInt(Timestamp timestamp) public pure returns (uint256) {
125
+ return uint256(uint40(Timestamp.unwrap(timestamp)));
126
+ }
55
127
  }