@etherisc/gif-next 0.0.2-bd7444a → 0.0.2-bdb6804-509

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 (450) hide show
  1. package/README.md +359 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +694 -31
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1329 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +1064 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +830 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1250 -87
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +1026 -90
  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 +233 -552
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +654 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +410 -620
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1348 -0
  32. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  34. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1289 -0
  36. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1064 -0
  38. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +673 -0
  40. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  41. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2677 -0
  42. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  43. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  44. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  45. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +639 -0
  46. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  48. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  50. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  51. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +532 -0
  52. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  53. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  54. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  55. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  56. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  57. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  58. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  60. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  62. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  63. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  64. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  65. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  66. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  68. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  69. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +10 -0
  70. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +860 -0
  72. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +641 -0
  74. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1263 -0
  76. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +721 -0
  78. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +849 -0
  80. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
  82. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1539 -0
  84. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +769 -0
  86. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +475 -0
  88. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +659 -0
  90. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +475 -0
  92. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +871 -0
  94. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +606 -0
  96. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +844 -0
  98. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +518 -0
  100. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +450 -0
  102. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1124 -0
  104. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +697 -0
  106. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1269 -0
  108. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
  110. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +988 -0
  112. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +689 -0
  114. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +872 -0
  116. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  118. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  119. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +536 -59
  122. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -0
  124. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  126. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/Registry.sol/Registry.json +583 -72
  128. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  129. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  130. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1158 -0
  132. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  138. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  139. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  140. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  141. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  143. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +46 -74
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +68 -53
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  147. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +106 -80
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IService.sol/IService.json +335 -0
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  154. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  155. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  156. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  157. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  158. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  160. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
  162. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  163. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  164. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  165. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +261 -217
  166. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  167. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  168. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  169. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  170. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  171. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  172. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  173. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  174. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  175. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
  176. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  177. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  178. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  179. package/artifacts/contracts/test/TestService.sol/TestService.json +596 -0
  180. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  181. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  182. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  183. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  184. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  185. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
  186. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  187. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  188. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  189. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  190. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
  192. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  194. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  196. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  198. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  200. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/Fee.sol/FeeLib.json +288 -0
  202. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  203. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  204. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +78 -4
  206. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  207. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  208. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  210. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  212. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  214. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  216. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  218. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  220. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  221. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  222. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  223. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  224. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  225. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +97 -4
  226. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  227. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  228. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  229. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  230. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  231. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  232. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  233. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  234. package/contracts/components/Component.sol +231 -40
  235. package/contracts/components/Distribution.sol +280 -0
  236. package/contracts/components/IComponent.sol +76 -0
  237. package/contracts/components/IDistributionComponent.sol +71 -0
  238. package/contracts/components/IPoolComponent.sol +113 -0
  239. package/contracts/components/IProductComponent.sol +40 -0
  240. package/contracts/components/Pool.sol +292 -18
  241. package/contracts/components/Product.sol +263 -33
  242. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  243. package/contracts/instance/BundleManager.sol +127 -0
  244. package/contracts/instance/Cloneable.sol +51 -0
  245. package/contracts/instance/IInstance.sol +55 -15
  246. package/contracts/instance/IInstanceService.sol +84 -0
  247. package/contracts/instance/Instance.sol +180 -45
  248. package/contracts/instance/InstanceAccessManager.sol +540 -0
  249. package/contracts/instance/InstanceAuthorizationsLib.sol +299 -0
  250. package/contracts/instance/InstanceReader.sol +293 -0
  251. package/contracts/instance/InstanceService.sol +320 -0
  252. package/contracts/instance/InstanceServiceManager.sol +54 -0
  253. package/contracts/instance/InstanceStore.sol +219 -0
  254. package/contracts/instance/ObjectManager.sol +82 -0
  255. package/contracts/instance/base/ComponentService.sol +147 -0
  256. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  257. package/contracts/instance/base/ILifecycle.sol +30 -0
  258. package/contracts/instance/base/KeyValueStore.sol +180 -0
  259. package/contracts/instance/base/Lifecycle.sol +109 -0
  260. package/contracts/instance/module/IAccess.sol +54 -0
  261. package/contracts/instance/module/IBundle.sol +23 -0
  262. package/contracts/instance/module/IComponents.sol +41 -0
  263. package/contracts/instance/module/IDistribution.sol +41 -0
  264. package/contracts/instance/module/IPolicy.sol +72 -0
  265. package/contracts/instance/module/IRisk.sol +11 -0
  266. package/contracts/instance/module/ISetup.sol +33 -0
  267. package/contracts/instance/module/ITreasury.sol +23 -0
  268. package/contracts/instance/service/ApplicationService.sol +183 -0
  269. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  270. package/contracts/instance/service/BundleService.sol +431 -0
  271. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  272. package/contracts/instance/service/ClaimService.sol +145 -0
  273. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  274. package/contracts/instance/service/DistributionService.sol +346 -0
  275. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  276. package/contracts/instance/service/IApplicationService.sol +64 -0
  277. package/contracts/instance/service/IBundleService.sol +93 -0
  278. package/contracts/instance/service/IClaimService.sol +61 -0
  279. package/contracts/instance/service/IDistributionService.sol +85 -0
  280. package/contracts/instance/service/IPolicyService.sol +72 -0
  281. package/contracts/instance/service/IPoolService.sol +99 -0
  282. package/contracts/instance/service/IPricingService.sol +36 -0
  283. package/contracts/instance/service/IProductService.sol +40 -0
  284. package/contracts/instance/service/PolicyService.sol +366 -0
  285. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  286. package/contracts/instance/service/PoolService.sol +303 -0
  287. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  288. package/contracts/instance/service/PricingService.sol +275 -0
  289. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  290. package/contracts/instance/service/ProductService.sol +210 -0
  291. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  292. package/contracts/registry/ChainNft.sol +145 -108
  293. package/contracts/registry/IRegistry.sol +80 -49
  294. package/contracts/registry/IRegistryService.sol +68 -0
  295. package/contracts/registry/ITransferInterceptor.sol +7 -0
  296. package/contracts/registry/Registry.sol +404 -119
  297. package/contracts/registry/RegistryAccessManager.sol +216 -0
  298. package/contracts/registry/RegistryService.sol +286 -0
  299. package/contracts/registry/RegistryServiceManager.sol +62 -0
  300. package/contracts/registry/ReleaseManager.sol +324 -0
  301. package/contracts/registry/TokenRegistry.sol +116 -0
  302. package/contracts/shared/ContractDeployerLib.sol +72 -0
  303. package/contracts/shared/ERC165.sol +27 -0
  304. package/contracts/shared/INftOwnable.sol +23 -0
  305. package/contracts/shared/IPolicyHolder.sol +26 -0
  306. package/contracts/shared/IRegisterable.sol +15 -0
  307. package/contracts/shared/IRegistryLinked.sol +12 -0
  308. package/contracts/shared/IService.sol +16 -0
  309. package/contracts/shared/IVersionable.sol +53 -0
  310. package/contracts/shared/NftOwnable.sol +120 -0
  311. package/contracts/shared/PolicyHolder.sol +81 -0
  312. package/contracts/shared/ProxyManager.sol +169 -0
  313. package/contracts/shared/Registerable.sol +74 -0
  314. package/contracts/shared/RegistryLinked.sol +48 -0
  315. package/contracts/shared/Service.sol +72 -0
  316. package/contracts/shared/TokenHandler.sol +33 -0
  317. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  318. package/contracts/shared/Versionable.sol +59 -0
  319. package/contracts/test/TestFee.sol +25 -0
  320. package/contracts/test/TestRegisterable.sol +18 -0
  321. package/contracts/test/TestRoleId.sol +14 -0
  322. package/contracts/test/TestService.sol +25 -0
  323. package/contracts/test/TestToken.sol +26 -0
  324. package/contracts/test/TestVersion.sol +44 -0
  325. package/contracts/test/TestVersionable.sol +17 -0
  326. package/contracts/test/Usdc.sol +26 -0
  327. package/contracts/types/AddressSet.sol +58 -0
  328. package/contracts/types/Amount.sol +60 -0
  329. package/contracts/types/Blocknumber.sol +77 -18
  330. package/contracts/types/ChainId.sol +18 -10
  331. package/contracts/types/ClaimId.sol +52 -0
  332. package/contracts/types/DistributorType.sol +55 -0
  333. package/contracts/types/Fee.sol +64 -0
  334. package/contracts/types/Key32.sol +50 -0
  335. package/contracts/types/NftId.sol +56 -11
  336. package/contracts/types/NftIdSet.sol +62 -0
  337. package/contracts/types/NumberId.sol +52 -0
  338. package/contracts/types/ObjectType.sol +161 -0
  339. package/contracts/types/PayoutId.sol +54 -0
  340. package/contracts/types/Referral.sol +89 -0
  341. package/contracts/types/RiskId.sol +43 -0
  342. package/contracts/types/RoleId.sol +97 -0
  343. package/contracts/types/Seconds.sol +54 -0
  344. package/contracts/types/StateId.sol +106 -0
  345. package/contracts/types/Timestamp.sol +91 -19
  346. package/contracts/types/UFixed.sol +194 -75
  347. package/contracts/types/Version.sol +108 -0
  348. package/package.json +21 -6
  349. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  350. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  351. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  352. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  353. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  354. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  355. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  357. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  359. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  361. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  363. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  365. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  367. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  369. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  370. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  371. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  372. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  373. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  374. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  375. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  376. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  377. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  378. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  379. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  380. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  381. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  382. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  383. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  384. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  385. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  386. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  388. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  390. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  391. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  392. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  393. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  394. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  395. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  397. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  398. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  399. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  400. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  401. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  402. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  403. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  404. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  405. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  406. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  407. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  409. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  410. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  411. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  412. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  413. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  414. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  415. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  416. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  417. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  418. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  420. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  421. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  422. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  423. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  424. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  425. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  426. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  427. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -440
  428. package/contracts/components/IPool.sol +0 -9
  429. package/contracts/components/IProduct.sol +0 -12
  430. package/contracts/experiment/errors/Require.sol +0 -33
  431. package/contracts/experiment/errors/Revert.sol +0 -39
  432. package/contracts/experiment/inheritance/A.sol +0 -56
  433. package/contracts/experiment/inheritance/B.sol +0 -23
  434. package/contracts/experiment/inheritance/C.sol +0 -28
  435. package/contracts/experiment/inheritance/IA.sol +0 -18
  436. package/contracts/experiment/inheritance/IB.sol +0 -9
  437. package/contracts/experiment/inheritance/IC.sol +0 -11
  438. package/contracts/experiment/types/TypeA.sol +0 -42
  439. package/contracts/experiment/types/TypeB.sol +0 -24
  440. package/contracts/instance/access/Access.sol +0 -218
  441. package/contracts/instance/access/IAccess.sol +0 -83
  442. package/contracts/instance/component/ComponentModule.sol +0 -248
  443. package/contracts/instance/component/IComponent.sol +0 -95
  444. package/contracts/instance/policy/IPolicy.sol +0 -66
  445. package/contracts/instance/policy/PolicyModule.sol +0 -107
  446. package/contracts/instance/pool/IPoolModule.sol +0 -41
  447. package/contracts/instance/pool/PoolModule.sol +0 -86
  448. package/contracts/instance/product/IProductService.sol +0 -46
  449. package/contracts/instance/product/ProductService.sol +0 -108
  450. package/contracts/registry/IChainNft.sol +0 -18
@@ -0,0 +1,97 @@
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
+
20
+ /// @dev role id needs to match with oz AccessManager.ADMIN_ROLE
21
+ function ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(type(uint64).min); }
22
+
23
+ /// @dev role id needs to match with oz AccessManager.PUBLIC_ROLE
24
+ function PUBLIC_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(type(uint64).max); }
25
+
26
+ // general pure free functions
27
+ function DISTRIBUTION_OWNER_ROLE_NAME() pure returns (string memory) { return "DistributionOwnerRole"; }
28
+ function ORACLE_OWNER_ROLE_NAME() pure returns (string memory) { return "OracleOwnerRole"; }
29
+ function POOL_OWNER_ROLE_NAME() pure returns (string memory) { return "PoolOwnerRole"; }
30
+ function PRODUCT_OWNER_ROLE_NAME() pure returns (string memory) { return "ProductOwnerRole"; }
31
+
32
+ function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2); }
33
+ function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); }
34
+ function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(4); }
35
+ function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(5); }
36
+
37
+ function INSTANCE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1900); }
38
+ function INSTANCE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2000); }
39
+ function DISTRIBUTION_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2100); }
40
+ function POOL_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2200); }
41
+ function PRODUCT_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2300); }
42
+ function APPLICATION_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2400); }
43
+ function POLICY_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2410); }
44
+ function CLAIM_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2420); }
45
+ function BUNDLE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2500); }
46
+ function INSTANCE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2600); }
47
+
48
+ function GIF_ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1500); }
49
+ function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1600); }
50
+ function RELEASE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1700); }
51
+
52
+ // @dev Returns true iff role ids a and b are identical
53
+ function eqRoleId(RoleId a, RoleId b) pure returns (bool isSame) {
54
+ return RoleId.unwrap(a) == RoleId.unwrap(b);
55
+ }
56
+
57
+ // @dev Returns true iff role ids a and b are different
58
+ function neRoleId(RoleId a, RoleId b) pure returns (bool isDifferent) {
59
+ return RoleId.unwrap(a) != RoleId.unwrap(b);
60
+ }
61
+
62
+ library RoleIdLib {
63
+ /// @dev Converts the RoleId to a uint.
64
+ function zero() public pure returns (RoleId) {
65
+ return RoleId.wrap(0);
66
+ }
67
+
68
+ /// @dev Converts an uint into a RoleId.
69
+ function toRoleId(uint256 a) public pure returns (RoleId) {
70
+ return RoleId.wrap(uint64(a));
71
+ }
72
+
73
+ /// @dev Converts the RoleId to a uint.
74
+ function toInt(RoleId a) public pure returns (uint64) {
75
+ return uint64(RoleId.unwrap(a));
76
+ }
77
+
78
+ /// @dev Returns true if the value is non-zero (> 0).
79
+ function gtz(RoleId a) public pure returns (bool) {
80
+ return RoleId.unwrap(a) > 0;
81
+ }
82
+
83
+ /// @dev Returns true if the value is zero (== 0).
84
+ function eqz(RoleId a) public pure returns (bool) {
85
+ return RoleId.unwrap(a) == 0;
86
+ }
87
+
88
+ /// @dev Returns the key32 value for the specified id and object type.
89
+ function toKey32(RoleId a) public pure returns (Key32 key) {
90
+ return Key32Lib.toKey32(ROLE(), toKeyId(a));
91
+ }
92
+
93
+ /// @dev Returns the key id value for the specified id
94
+ function toKeyId(RoleId a) public pure returns (KeyId keyId) {
95
+ return KeyId.wrap(bytes31(uint248(RoleId.unwrap(a))));
96
+ }
97
+ }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ type Seconds is uint40;
5
+
6
+ using {
7
+ SecondsLib.eqz,
8
+ SecondsLib.gtz,
9
+ SecondsLib.toInt
10
+ } for Seconds global;
11
+
12
+
13
+ library SecondsLib {
14
+
15
+ error ErrorSecondsLibDurationTooBig(uint256 duration);
16
+
17
+ function zero() public pure returns (Seconds) {
18
+ return Seconds.wrap(0);
19
+ }
20
+
21
+ function max() public pure returns (Seconds) {
22
+ return Seconds.wrap(_max());
23
+ }
24
+
25
+ /// @dev converts the uint duration into Seconds
26
+ /// function reverts if duration is exceeding max Seconds value
27
+ function toSeconds(uint256 duration) public pure returns (Seconds) {
28
+ // if(duration > type(uint40).max) {
29
+ if(duration > _max()) {
30
+ revert ErrorSecondsLibDurationTooBig(duration);
31
+ }
32
+
33
+ return Seconds.wrap(uint40(duration));
34
+ }
35
+
36
+ /// @dev return true if duration equals 0
37
+ function eqz(Seconds duration) public pure returns (bool) {
38
+ return Seconds.unwrap(duration) == 0;
39
+ }
40
+
41
+ /// @dev return true if duration is larger than 0
42
+ function gtz(Seconds duration) public pure returns (bool) {
43
+ return Seconds.unwrap(duration) > 0;
44
+ }
45
+
46
+ function toInt(Seconds duration) public pure returns (uint256) {
47
+ return uint256(uint40(Seconds.unwrap(duration)));
48
+ }
49
+
50
+ function _max() internal pure returns (uint40) {
51
+ // IMPORTANT: type nees to match with actual definition for Seconds
52
+ return type(uint40).max;
53
+ }
54
+ }
@@ -0,0 +1,106 @@
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
+ function KEEP_STATE() pure returns (StateId) {
62
+ return toStateId(type(uint8).max);
63
+ }
64
+
65
+ /// @dev Converts the uint8 to a StateId.
66
+ function toStateId(uint256 id) pure returns (StateId) {
67
+ return StateId.wrap(uint8(id));
68
+ }
69
+
70
+ // TODO move to StateIdLib and rename to zero()
71
+ /// @dev Return the StateId zero (0)
72
+ function zeroStateId() pure returns (StateId) {
73
+ return StateId.wrap(0);
74
+ }
75
+
76
+ // pure free functions for operators
77
+ function eqStateId(StateId a, StateId b) pure returns (bool isSame) {
78
+ return StateId.unwrap(a) == StateId.unwrap(b);
79
+ }
80
+
81
+ function neStateId(StateId a, StateId b) pure returns (bool isDifferent) {
82
+ return StateId.unwrap(a) != StateId.unwrap(b);
83
+ }
84
+
85
+ // library functions that operate on user defined type
86
+ library StateIdLib {
87
+ /// @dev Converts the NftId to a uint256.
88
+ function toInt(StateId stateId) public pure returns (uint96) {
89
+ return uint96(StateId.unwrap(stateId));
90
+ }
91
+
92
+ /// @dev Returns true if the value is non-zero (> 0).
93
+ function gtz(StateId a) public pure returns (bool) {
94
+ return StateId.unwrap(a) > 0;
95
+ }
96
+
97
+ /// @dev Returns true if the value is zero (== 0).
98
+ function eqz(StateId a) public pure returns (bool) {
99
+ return StateId.unwrap(a) == 0;
100
+ }
101
+
102
+ /// @dev Returns true if the values are equal (==).
103
+ function eq(StateId a, StateId b) public pure returns (bool isSame) {
104
+ return eqStateId(a, b);
105
+ }
106
+ }
@@ -1,5 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Seconds} from "./Seconds.sol";
3
5
 
4
6
  type Timestamp is uint40;
5
7
 
@@ -9,47 +11,117 @@ using {
9
11
  ltTimestamp as <,
10
12
  lteTimestamp as <=,
11
13
  eqTimestamp as ==,
12
- neTimestamp as !=
14
+ neTimestamp as !=,
15
+ TimestampLib.gtz,
16
+ TimestampLib.eqz,
17
+ TimestampLib.addSeconds,
18
+ TimestampLib.toInt
13
19
  } for Timestamp global;
14
20
 
15
21
  /// @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); }
22
+ function gtTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
23
+ return Timestamp.unwrap(a) > Timestamp.unwrap(b);
24
+ }
25
+
17
26
  /// @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); }
27
+ function gteTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
28
+ return Timestamp.unwrap(a) >= Timestamp.unwrap(b);
29
+ }
19
30
 
20
31
  /// @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); }
32
+ function ltTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
33
+ return Timestamp.unwrap(a) < Timestamp.unwrap(b);
34
+ }
35
+
22
36
  /// @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); }
37
+ function lteTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
38
+ return Timestamp.unwrap(a) <= Timestamp.unwrap(b);
39
+ }
24
40
 
25
41
  /// @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); }
42
+ function eqTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
43
+ return Timestamp.unwrap(a) == Timestamp.unwrap(b);
44
+ }
45
+
27
46
  /// @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); }
47
+ function neTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
48
+ return Timestamp.unwrap(a) != Timestamp.unwrap(b);
49
+ }
29
50
 
30
51
  /// @dev Converts the uint256 to a Timestamp.
31
- function toTimestamp(uint256 timestamp) pure returns(Timestamp) { return Timestamp.wrap(uint40(timestamp));}
32
-
33
- function blockTimestamp() view returns(Timestamp) { return toTimestamp(block.timestamp); }
52
+ function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
53
+ return Timestamp.wrap(uint40(timestamp));
54
+ }
34
55
 
56
+ // TODO move to TimestampLib and rename to zero()
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 equals 0
107
+ function eqz(Timestamp timestamp) public pure returns (bool) {
108
+ return Timestamp.unwrap(timestamp) == 0;
109
+ }
110
+
111
+ /// @dev return true if Timestamp is larger than 0
112
+ function gtz(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
+ Seconds duration
120
+ ) public pure returns (Timestamp) {
121
+ return toTimestamp(Timestamp.unwrap(timestamp) + duration.toInt());
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
  }