@etherisc/gif-next 0.0.2-83889c4-030 → 0.0.2-839c4b8-393

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 (604) hide show
  1. package/README.md +137 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/{shared/IAccessManagerExtended.sol/IAccessManagerExtended.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +605 -795
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +139 -616
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +763 -303
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +235 -123
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +145 -282
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +547 -77
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  67. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +59 -195
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +594 -101
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +510 -68
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +600 -235
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1889 -313
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1663 -845
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +498 -213
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +141 -103
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1500 -2103
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  103. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  105. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  106. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  108. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  109. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  110. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  111. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  112. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +142 -139
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +110 -10
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +140 -423
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +222 -177
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +184 -92
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +576 -243
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +223 -103
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +395 -52
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +147 -406
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +756 -372
  143. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  144. package/artifacts/contracts/pool/Pool.sol/Pool.json +144 -694
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +934 -533
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -102
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +372 -170
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +166 -98
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  156. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +489 -231
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +195 -119
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +313 -8
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +362 -17
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +429 -100
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +195 -79
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +282 -271
  173. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  174. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +289 -150
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +567 -309
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +203 -103
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.json +258 -309
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -129
  185. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  186. package/artifacts/contracts/product/Product.sol/Product.json +316 -606
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +384 -69
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +109 -147
  197. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  201. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/Registry.sol/Registry.json +617 -133
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1908 -155
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  206. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  208. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +159 -276
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +148 -84
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  214. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  216. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  218. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  220. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  221. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Component.sol/Component.json +86 -287
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +620 -559
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  226. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +197 -127
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  234. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  235. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -103
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +545 -237
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +131 -139
  241. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  243. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  245. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  247. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  249. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IService.sol/IService.json +96 -1
  252. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  254. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  255. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +125 -376
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +92 -104
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1513 -204
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +261 -107
  280. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  281. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +1653 -523
  284. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +186 -116
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +315 -295
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -104
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1725 -817
  296. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +184 -76
  300. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  301. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  302. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Amount.sol/AmountLib.json +63 -10
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  306. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  308. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  310. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  312. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  314. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  316. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  318. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  320. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  321. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  322. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +140 -4
  324. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  326. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  328. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  330. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  332. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  334. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +93 -2
  336. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  340. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  342. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  344. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +24 -5
  346. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  348. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  350. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  352. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  353. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  354. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  356. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  358. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  359. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  360. package/contracts/accounting/AccountingService.sol +274 -0
  361. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  362. package/contracts/accounting/IAccountingService.sol +47 -0
  363. package/contracts/authorization/AccessAdmin.sol +780 -0
  364. package/contracts/authorization/AccessAdminLib.sol +396 -0
  365. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  366. package/contracts/authorization/Authorization.sol +169 -0
  367. package/contracts/authorization/IAccess.sol +67 -0
  368. package/contracts/authorization/IAccessAdmin.sol +144 -0
  369. package/contracts/authorization/IAuthorization.sol +26 -0
  370. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  371. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  372. package/contracts/distribution/BasicDistribution.sol +140 -0
  373. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  374. package/contracts/distribution/Distribution.sol +125 -141
  375. package/contracts/distribution/DistributionService.sol +287 -137
  376. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  377. package/contracts/distribution/IDistributionComponent.sol +21 -42
  378. package/contracts/distribution/IDistributionService.sol +60 -26
  379. package/contracts/examples/fire/DamageLevel.sol +59 -0
  380. package/contracts/examples/fire/FirePool.sol +86 -0
  381. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  382. package/contracts/examples/fire/FireProduct.sol +433 -0
  383. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  384. package/contracts/examples/fire/FireUSD.sol +26 -0
  385. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  386. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  387. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  388. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  389. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  390. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  391. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  392. package/contracts/instance/BaseStore.sol +93 -0
  393. package/contracts/instance/BundleSet.sol +130 -0
  394. package/contracts/instance/IBaseStore.sol +37 -0
  395. package/contracts/instance/IInstance.sol +121 -47
  396. package/contracts/instance/IInstanceService.sol +80 -42
  397. package/contracts/instance/Instance.sol +251 -136
  398. package/contracts/instance/InstanceAdmin.sol +297 -249
  399. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  400. package/contracts/instance/InstanceReader.sol +478 -256
  401. package/contracts/instance/InstanceService.sol +389 -237
  402. package/contracts/instance/InstanceServiceManager.sol +8 -13
  403. package/contracts/instance/InstanceStore.sol +163 -121
  404. package/contracts/instance/ProductStore.sol +290 -0
  405. package/contracts/instance/RiskSet.sol +126 -0
  406. package/contracts/instance/TargetNames.sol +10 -0
  407. package/contracts/instance/base/BalanceStore.sol +15 -12
  408. package/contracts/instance/base/Cloneable.sol +2 -25
  409. package/contracts/instance/base/ObjectCounter.sol +1 -2
  410. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  411. package/contracts/instance/base/ObjectSet.sol +77 -0
  412. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  413. package/contracts/instance/module/IBundle.sol +6 -5
  414. package/contracts/instance/module/IComponents.sol +29 -21
  415. package/contracts/instance/module/IDistribution.sol +21 -9
  416. package/contracts/instance/module/IPolicy.sol +50 -29
  417. package/contracts/instance/module/IRisk.sol +5 -0
  418. package/contracts/mock/Dip.sol +1 -1
  419. package/contracts/oracle/BasicOracle.sol +44 -0
  420. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  421. package/contracts/oracle/IOracle.sol +25 -4
  422. package/contracts/oracle/IOracleComponent.sol +2 -1
  423. package/contracts/oracle/IOracleService.sol +2 -1
  424. package/contracts/oracle/Oracle.sol +60 -53
  425. package/contracts/oracle/OracleService.sol +120 -87
  426. package/contracts/oracle/OracleServiceManager.sol +8 -11
  427. package/contracts/pool/BasicPool.sol +161 -0
  428. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  429. package/contracts/pool/BundleService.sol +225 -135
  430. package/contracts/pool/BundleServiceManager.sol +8 -11
  431. package/contracts/pool/IBundleService.sol +43 -33
  432. package/contracts/pool/IPoolComponent.sol +20 -70
  433. package/contracts/pool/IPoolService.sol +97 -77
  434. package/contracts/pool/Pool.sol +196 -164
  435. package/contracts/pool/PoolLib.sol +341 -0
  436. package/contracts/pool/PoolService.sol +424 -263
  437. package/contracts/pool/PoolServiceManager.sol +6 -9
  438. package/contracts/product/ApplicationService.sol +159 -86
  439. package/contracts/product/ApplicationServiceManager.sol +6 -6
  440. package/contracts/product/BasicProduct.sol +48 -0
  441. package/contracts/product/BasicProductAuthorization.sol +63 -0
  442. package/contracts/product/ClaimService.sol +396 -212
  443. package/contracts/product/ClaimServiceManager.sol +6 -6
  444. package/contracts/product/IApplicationService.sol +29 -3
  445. package/contracts/product/IClaimService.sol +48 -11
  446. package/contracts/product/IPolicyService.sol +61 -37
  447. package/contracts/product/IPricingService.sol +11 -10
  448. package/contracts/product/IProductComponent.sol +29 -9
  449. package/contracts/product/IRiskService.sol +48 -0
  450. package/contracts/product/PolicyService.sol +450 -280
  451. package/contracts/product/PolicyServiceLib.sol +139 -0
  452. package/contracts/product/PolicyServiceManager.sol +6 -9
  453. package/contracts/product/PricingService.sol +93 -88
  454. package/contracts/product/PricingServiceManager.sol +6 -9
  455. package/contracts/product/Product.sol +261 -147
  456. package/contracts/product/RiskService.sol +189 -0
  457. package/contracts/product/RiskServiceManager.sol +39 -0
  458. package/contracts/registry/ChainNft.sol +72 -40
  459. package/contracts/registry/IRegistry.sol +84 -36
  460. package/contracts/registry/IRegistryService.sol +3 -10
  461. package/contracts/registry/IRelease.sol +29 -0
  462. package/contracts/registry/ITransferInterceptor.sol +1 -2
  463. package/contracts/registry/Registry.sol +378 -218
  464. package/contracts/registry/RegistryAdmin.sol +125 -171
  465. package/contracts/registry/RegistryAuthorization.sol +336 -0
  466. package/contracts/registry/RegistryService.sol +47 -72
  467. package/contracts/registry/RegistryServiceManager.sol +5 -10
  468. package/contracts/registry/ReleaseAdmin.sol +195 -0
  469. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  470. package/contracts/registry/ReleaseRegistry.sol +525 -0
  471. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  472. package/contracts/registry/TokenRegistry.sol +61 -59
  473. package/contracts/shared/Component.sol +71 -142
  474. package/contracts/shared/ComponentService.sol +462 -389
  475. package/contracts/shared/ComponentServiceManager.sol +10 -7
  476. package/contracts/shared/ContractLib.sol +312 -0
  477. package/contracts/shared/IComponent.sol +6 -18
  478. package/contracts/shared/IComponentService.sol +50 -41
  479. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  480. package/contracts/shared/ILifecycle.sol +3 -2
  481. package/contracts/shared/INftOwnable.sol +4 -0
  482. package/contracts/shared/IPolicyHolder.sol +12 -22
  483. package/contracts/shared/IRegisterable.sol +22 -1
  484. package/contracts/shared/IService.sol +10 -5
  485. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  486. package/contracts/shared/InstanceLinkedComponent.sol +96 -48
  487. package/contracts/shared/Lifecycle.sol +30 -72
  488. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  489. package/contracts/shared/NftOwnable.sol +33 -11
  490. package/contracts/shared/PolicyHolder.sol +20 -59
  491. package/contracts/shared/Registerable.sol +52 -21
  492. package/contracts/shared/RegistryLinked.sol +9 -14
  493. package/contracts/shared/Service.sol +31 -41
  494. package/contracts/shared/TokenHandler.sol +310 -26
  495. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  496. package/contracts/staking/IStaking.sol +272 -73
  497. package/contracts/staking/IStakingService.sol +54 -76
  498. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  499. package/contracts/staking/Staking.sol +540 -294
  500. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +72 -56
  501. package/contracts/staking/StakingManager.sol +14 -15
  502. package/contracts/staking/StakingReader.sol +72 -88
  503. package/contracts/staking/StakingService.sol +90 -175
  504. package/contracts/staking/StakingServiceManager.sol +9 -8
  505. package/contracts/staking/StakingStore.sol +1131 -335
  506. package/contracts/staking/TargetHandler.sol +132 -0
  507. package/contracts/staking/TargetManagerLib.sol +73 -46
  508. package/contracts/type/Amount.sol +31 -5
  509. package/contracts/type/Blocknumber.sol +22 -16
  510. package/contracts/type/ChainId.sol +101 -0
  511. package/contracts/type/ClaimId.sol +6 -1
  512. package/contracts/type/Fee.sol +8 -8
  513. package/contracts/type/Key32.sol +2 -2
  514. package/contracts/type/Key32Set.sol +62 -0
  515. package/contracts/type/NftId.sol +7 -0
  516. package/contracts/type/ObjectType.sol +200 -61
  517. package/contracts/type/PayoutId.sol +10 -10
  518. package/contracts/type/Referral.sol +1 -0
  519. package/contracts/type/RiskId.sol +38 -6
  520. package/contracts/type/RoleId.sol +121 -87
  521. package/contracts/type/Seconds.sol +40 -1
  522. package/contracts/type/Selector.sol +107 -0
  523. package/contracts/type/StateId.sol +15 -1
  524. package/contracts/type/String.sol +65 -0
  525. package/contracts/type/Timestamp.sol +14 -7
  526. package/contracts/type/UFixed.sol +62 -125
  527. package/contracts/type/Version.sol +57 -6
  528. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  529. package/contracts/{shared → upgradeability}/ProxyManager.sol +96 -49
  530. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  531. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  532. package/package.json +10 -7
  533. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  534. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  535. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  536. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  537. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  538. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  539. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  540. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  541. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  542. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -387
  543. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  544. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -679
  545. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  546. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -694
  547. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  548. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  549. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  550. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  551. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  552. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  553. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  554. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  555. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  556. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  557. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  558. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  559. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  560. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  561. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  562. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  563. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  564. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  565. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  566. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  567. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  568. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  569. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  570. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  571. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  572. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -571
  573. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  574. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  575. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  576. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  577. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  578. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  579. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  580. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  581. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -444
  582. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  583. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  584. package/contracts/instance/BundleManager.sol +0 -126
  585. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  586. package/contracts/instance/base/ObjectManager.sol +0 -82
  587. package/contracts/instance/module/IAccess.sol +0 -46
  588. package/contracts/product/IProductService.sol +0 -33
  589. package/contracts/product/ProductService.sol +0 -124
  590. package/contracts/product/ProductServiceManager.sol +0 -42
  591. package/contracts/registry/ReleaseManager.sol +0 -600
  592. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  593. package/contracts/shared/AccessManagerCustom.sol +0 -736
  594. package/contracts/shared/AccessManagerExtended.sol +0 -470
  595. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  596. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  597. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  598. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  599. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  600. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  601. package/contracts/shared/IKeyValueStore.sol +0 -53
  602. package/contracts/shared/InitializableCustom.sol +0 -177
  603. package/contracts/shared/KeyValueStore.sol +0 -127
  604. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
@@ -2,7 +2,8 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
- import {ROLE} from "./ObjectType.sol";
5
+ import {ObjectType, ROLE} from "./ObjectType.sol";
6
+ import {VersionPart, VersionPartLib} from "./Version.sol";
6
7
 
7
8
  type RoleId is uint64;
8
9
 
@@ -10,116 +11,159 @@ type RoleId is uint64;
10
11
  using {
11
12
  eqRoleId as ==,
12
13
  neRoleId as !=,
13
- RoleIdLib.eqz,
14
- RoleIdLib.gtz,
15
14
  RoleIdLib.toInt,
16
- RoleIdLib.toKey32
15
+ RoleIdLib.isServiceRole,
16
+ RoleIdLib.eqz,
17
+ RoleIdLib.gtz
17
18
  } for RoleId global;
18
19
 
20
+ // general pure free functions
21
+
22
+ // @dev Returns true iff role ids a and b are identical
23
+ function eqRoleId(RoleId a, RoleId b) pure returns (bool isSame) {
24
+ return RoleId.unwrap(a) == RoleId.unwrap(b);
25
+ }
26
+
27
+ // @dev Returns true iff role ids a and b are different
28
+ function neRoleId(RoleId a, RoleId b) pure returns (bool isDifferent) {
29
+ return RoleId.unwrap(a) != RoleId.unwrap(b);
30
+ }
31
+
32
+ //--- OpenZeppelin provided roles -------------------------------------------//
19
33
 
20
- /// @dev role id needs to match with oz AccessManager.ADMIN_ROLE
34
+ /// @dev Role ID needs to match with oz AccessManager.ADMIN_ROLE
21
35
  function ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(type(uint64).min); }
22
36
 
23
- /// @dev role id needs to match with oz AccessManager.PUBLIC_ROLE
37
+ /// @dev Role ID needs to match with oz AccessManager.PUBLIC_ROLE
24
38
  function PUBLIC_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(type(uint64).max); }
25
39
 
26
- // general pure free functions
40
+ //--- GIF roles (range: 1-99) ----------------------------------------------//
27
41
 
28
42
  /// @dev cental role for gif release management.
29
43
  /// this role is necessary to call ReleaseManager.createNextRelease/activateNextRelease
30
44
  /// the actual deployment of a release requires the GIF_MANAGER_ROLE.
31
45
  /// GIF_ADMIN_ROLE is the admin of the GIF_MANAGER_ROLE.
32
46
  /// only a single holder may hold this role at any time
33
- function GIF_ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1500); }
47
+ function GIF_ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1); }
34
48
 
35
49
  /// @dev role for token whith/blacklisting, deploying and registering the services for a new major release
36
50
  /// registering services for a new major release is only possible after a new initial release has been created by the GIF_ADMIN_ROLE
37
51
  /// token white/blacklisting is possible for any active release
38
- function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1600); }
39
-
40
- /// @dev instance specific role to register/own a distribution component
41
- function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2); }
42
-
43
- /// @dev instance specific role to register/own an oracle component
44
- function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); }
45
-
46
- /// @dev instance specific role to register/own a pool component
47
- function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(4); }
48
-
49
- /// @dev instance specific role to register/own a product component
50
- function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(5); }
51
-
52
- /// @dev role associated with an instance contract
53
- /// this role is the admin role for the INSTANCE_OWNER_ROLE
54
- function INSTANCE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2600); }
55
-
56
- /// @dev required role to register/own an instance
57
- /// allows instance specific target, role and access management
58
- function INSTANCE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1900); }
52
+ function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2); }
53
+
54
+ /// @dev role for registering remote staking targets and reporting remote total value locked amounts.
55
+ function GIF_REMOTE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); }
56
+
57
+ // TODO check if/where this is really needed
58
+ /// @dev role assigned to release registry, release specfic to lock/unlock a release
59
+ function RELEASE_REGISTRY_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(4); }
60
+
61
+ /// @dev role assigned to every instance owner
62
+ function INSTANCE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(5); }
63
+
64
+ // TODO upate role id ranges
65
+ //--- GIF core contract roles (range: 200 - 9'900) --------------------------//
66
+ // created and assigned during initial deployment for registry and staking
67
+ // granting for instances and components in instance service
68
+ // object type * 100 + 0, examples:
69
+ // - registry contract role: 200
70
+ // - staking contract role: 300
71
+ // - instance contract role: 1000
72
+
73
+ //--- GIF service roles (range 201 - 9'9xx) ---------------------------------//
74
+ // created and assigned by release manager contract
75
+ // object type * 100 + 1/major version, examples:
76
+ // - registry service role (any version): 299
77
+ // - registry service role (version 3): 203
78
+ // - registry service role (any version): 399
79
+ // - staking service role: (version 3): 303
80
+ // - application service role (version 3): 2003
81
+
82
+ //--- GIF component contract roles (range 12'001 - 19'099) ------------------//
83
+ // the min value of 12'001 is based on the following calculation:
84
+ // object type * 1000 + 1 where the lowest object type is 12 (product)
85
+ // assigned at component registration time
86
+ // object type * 1000 + instane specific component counter
87
+ // on any instance a maximum number of 999 components may be deployed
88
+ // examples:
89
+ // - 1st pool on instance: 15001
90
+ // - 1st distribution on instance: 14002
91
+ // - 1st product on instance: 12003
92
+ // - 2nd pool on instance: 15004
93
+ // - 2nd distribution on instance: 14005
94
+ // - 2nd product on instance: 12006
95
+
96
+
97
+ //--- Custom roles (range >= 1'000'000) -------------------------------------//
98
+
99
+ function CUSTOM_ROLE_MIN() pure returns (RoleId) { return RoleIdLib.toRoleId(1000000); }
59
100
 
60
- function REGISTRY_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1800); }
61
-
62
- /// @dev instance specific role for instance service
63
- function INSTANCE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2000); }
64
-
65
- /// @dev role for creating gif target on instance service
66
- function CAN_CREATE_GIF_TARGET__ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1700); }
67
-
68
- /// @dev role for registering gif components
69
- function COMPONENT_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2001); }
70
-
71
- /// @dev instance specific role for distribution service
72
- function DISTRIBUTION_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2100); }
73
-
74
- /// @dev instance specific role for oracle service
75
- function ORACLE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2150); }
101
+ library RoleIdLib {
76
102
 
77
- /// @dev instance specific role for pool service
78
- function POOL_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2200); }
103
+ error ErrorRoleIdTooBig(uint256 roleId);
79
104
 
80
- /// @dev instance specific role for product service
81
- function PRODUCT_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2300); }
105
+ // constant values need to match with AccessAdminLib.SERVICE_ROLE_*
106
+ uint64 public constant SERVICE_ROLE_MIN = 1000;
107
+ uint64 public constant SERVICE_ROLE_MAX = 99099; // 99 (max object type) * 1000 + 99
82
108
 
83
- /// @dev instance specific role for application service
84
- function APPLICATION_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2400); }
109
+ uint64 public constant SERVICE_ROLE_FACTOR = 1000;
85
110
 
86
- /// @dev instance specific role for policy service
87
- function POLICY_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2410); }
111
+ /// @dev Converts the RoleId to a uint.
112
+ function zero() public pure returns (RoleId) {
113
+ return RoleId.wrap(0);
114
+ }
88
115
 
89
- /// @dev instance specific role for claim service
90
- function CLAIM_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2420); }
91
116
 
92
- /// @dev instance specific role for bundle service
93
- function BUNDLE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2500); }
117
+ /// @dev Converts an uint into a role id.
118
+ function toRoleId(uint256 a) public pure returns (RoleId) {
119
+ if (a > type(uint64).max) {
120
+ revert ErrorRoleIdTooBig(a);
121
+ }
94
122
 
95
- /// @dev instance specific role for pricing service
96
- function PRICING_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2800); }
123
+ return RoleId.wrap(uint64(a));
124
+ }
97
125
 
98
- /// @dev instance specific role for staking service
99
- function STAKING_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2900); }
100
126
 
101
- // @dev Returns true iff role ids a and b are identical
102
- function eqRoleId(RoleId a, RoleId b) pure returns (bool isSame) {
103
- return RoleId.unwrap(a) == RoleId.unwrap(b);
104
- }
127
+ function isServiceRole(RoleId roleId)
128
+ public
129
+ pure
130
+ returns (bool)
131
+ {
132
+ uint256 roleIdInt = RoleId.unwrap(roleId);
133
+ return roleIdInt >= SERVICE_ROLE_MIN && roleIdInt <= SERVICE_ROLE_MAX;
134
+ }
105
135
 
106
- // @dev Returns true iff role ids a and b are different
107
- function neRoleId(RoleId a, RoleId b) pure returns (bool isDifferent) {
108
- return RoleId.unwrap(a) != RoleId.unwrap(b);
109
- }
110
136
 
111
- library RoleIdLib {
112
- /// @dev Converts the RoleId to a uint.
113
- function zero() public pure returns (RoleId) {
114
- return RoleId.wrap(0);
137
+ function toGenericServiceRoleId(
138
+ ObjectType objectType
139
+ )
140
+ public
141
+ pure
142
+ returns (RoleId)
143
+ {
144
+ return toServiceRoleId(
145
+ objectType,
146
+ VersionPartLib.releaseMax());
115
147
  }
116
148
 
117
- /// @dev Converts an uint into a RoleId.
118
- function toRoleId(uint256 a) public pure returns (RoleId) {
119
- return RoleId.wrap(uint64(a));
149
+
150
+ function toServiceRoleId(
151
+ ObjectType serviceDomain,
152
+ VersionPart release
153
+ )
154
+ public
155
+ pure
156
+ returns (RoleId serviceRoleId)
157
+ {
158
+ uint256 serviceRoleIdInt =
159
+ SERVICE_ROLE_MIN
160
+ + SERVICE_ROLE_FACTOR * (serviceDomain.toInt() - 1)
161
+ + release.toInt();
162
+
163
+ return toRoleId(serviceRoleIdInt);
120
164
  }
121
165
 
122
- /// @dev Converts the RoleId to a uint.
166
+ /// @dev Converts the role id to a uint.
123
167
  function toInt(RoleId a) public pure returns (uint64) {
124
168
  return uint64(RoleId.unwrap(a));
125
169
  }
@@ -133,14 +177,4 @@ library RoleIdLib {
133
177
  function eqz(RoleId a) public pure returns (bool) {
134
178
  return RoleId.unwrap(a) == 0;
135
179
  }
136
-
137
- /// @dev Returns the key32 value for the specified id and object type.
138
- function toKey32(RoleId a) public pure returns (Key32 key) {
139
- return Key32Lib.toKey32(ROLE(), toKeyId(a));
140
- }
141
-
142
- /// @dev Returns the key id value for the specified id
143
- function toKeyId(RoleId a) public pure returns (KeyId keyId) {
144
- return KeyId.wrap(bytes31(uint248(RoleId.unwrap(a))));
145
- }
146
180
  }
@@ -1,24 +1,40 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ /// @dev Target: Cover durations of 1000 years.
4
5
  type Seconds is uint40;
5
6
 
6
7
  using {
7
8
  SecondsEq as ==,
9
+ SecondsLt as <,
8
10
  SecondsGt as >,
11
+ SecondsAdd as +,
9
12
  SecondsLib.eqz,
10
13
  SecondsLib.gtz,
11
- SecondsLib.toInt
14
+ SecondsLib.eq,
15
+ SecondsLib.gt,
16
+ SecondsLib.lt,
17
+ SecondsLib.toInt,
18
+ SecondsLib.add
12
19
  } for Seconds global;
13
20
 
14
21
  function SecondsEq(Seconds duration1, Seconds duration2) pure returns (bool) {
15
22
  return SecondsLib.eq(duration1, duration2);
16
23
  }
17
24
 
25
+ function SecondsLt(Seconds duration1, Seconds duration2) pure returns (bool) {
26
+ return SecondsLib.lt(duration1, duration2);
27
+ }
28
+
18
29
  function SecondsGt(Seconds duration1, Seconds duration2) pure returns (bool) {
19
30
  return SecondsLib.gt(duration1, duration2);
20
31
  }
21
32
 
33
+ function SecondsAdd(Seconds duration1, Seconds duration2) pure returns (Seconds) {
34
+ return SecondsLib.add(duration1, duration2);
35
+ }
36
+
37
+
22
38
  library SecondsLib {
23
39
 
24
40
  error ErrorSecondsLibDurationTooBig(uint256 duration);
@@ -35,6 +51,10 @@ library SecondsLib {
35
51
  return Seconds.wrap(24 * 3600);
36
52
  }
37
53
 
54
+ function fromDays(uint32 numberOfDays) public pure returns (Seconds duration) {
55
+ return Seconds.wrap(numberOfDays * 24 * 3600);
56
+ }
57
+
38
58
  function oneYear() public pure returns (Seconds duration) {
39
59
  return Seconds.wrap(365 * 24 * 3600);
40
60
  }
@@ -70,6 +90,25 @@ library SecondsLib {
70
90
  return Seconds.unwrap(duration1) > Seconds.unwrap(duration2);
71
91
  }
72
92
 
93
+ /// @dev return true if duration1 is smaller than duration2
94
+ function lt(Seconds duration1, Seconds duration2) public pure returns (bool) {
95
+ return Seconds.unwrap(duration1) < Seconds.unwrap(duration2);
96
+ }
97
+
98
+ /// @dev returns the smaller of the duration
99
+ function min(Seconds duration1, Seconds duration2) public pure returns (Seconds) {
100
+ if (Seconds.unwrap(duration1) < Seconds.unwrap(duration2)) {
101
+ return duration1;
102
+ }
103
+
104
+ return duration2;
105
+ }
106
+
107
+ /// @dev return add duration1 and duration2
108
+ function add(Seconds duration1, Seconds duration2) public pure returns (Seconds) {
109
+ return Seconds.wrap(Seconds.unwrap(duration1) + Seconds.unwrap(duration2));
110
+ }
111
+
73
112
  function toInt(Seconds duration) public pure returns (uint256) {
74
113
  return uint256(uint40(Seconds.unwrap(duration)));
75
114
  }
@@ -0,0 +1,107 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ type Selector is bytes4;
5
+
6
+ // type bindings
7
+ using {
8
+ eqSelector as ==,
9
+ neSelector as !=,
10
+ SelectorLib.toBytes4,
11
+ SelectorLib.toString,
12
+ SelectorLib.eqz
13
+ } for Selector global;
14
+
15
+ // pure free functions for operators
16
+ function eqSelector(Selector s1, Selector s2) pure returns (bool isSame) {
17
+ return SelectorLib.eq(s1, s2);
18
+ }
19
+
20
+ function neSelector(Selector s1, Selector s2) pure returns (bool isDifferent) {
21
+ return SelectorLib.ne(s1, s2);
22
+ }
23
+
24
+ // library functions that operate on user defined type
25
+ library SelectorLib {
26
+
27
+ function zero() public pure returns (Selector) {
28
+ return Selector.wrap("");
29
+ }
30
+
31
+ function eqz(Selector s) public pure returns (bool) {
32
+ return Selector.unwrap(s) == "";
33
+ }
34
+
35
+ function eq(Selector s1, Selector s2) public pure returns (bool isSame) {
36
+ return Selector.unwrap(s1) == Selector.unwrap(s2);
37
+ }
38
+
39
+ function ne(Selector s1, Selector s2) public pure returns (bool isDifferent) {
40
+ return Selector.unwrap(s1) != Selector.unwrap(s2);
41
+ }
42
+
43
+ function toSelector(bytes4 selector) public pure returns (Selector) {
44
+ return Selector.wrap(selector);
45
+ }
46
+
47
+ function toBytes4(Selector s) public pure returns (bytes4) {
48
+ return Selector.unwrap(s);
49
+ }
50
+
51
+ function toString(Selector s) public pure returns (string memory) {
52
+ return string(abi.encode(Selector.unwrap(s)));
53
+ }
54
+ }
55
+
56
+ // selector specific set library
57
+ // based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/structs/EnumerableSet.sol
58
+ library SelectorSetLib {
59
+
60
+ struct Set {
61
+ Selector[] selectors;
62
+ mapping(Selector selector => uint256 index) at;
63
+ }
64
+
65
+ function add(Set storage set, Selector selector) external {
66
+ // selector already in set
67
+ if (set.at[selector] > 0) { return; }
68
+
69
+ set.selectors.push(selector);
70
+ set.at[selector] = set.selectors.length;
71
+ }
72
+
73
+ function remove(Set storage set, Selector selector) external {
74
+ uint256 selectorIndex = set.at[selector];
75
+
76
+ // selector not in set
77
+ if (selectorIndex == 0) {return; }
78
+
79
+ uint256 toDeleteIndex = selectorIndex - 1;
80
+ uint256 lastIndex = set.selectors.length - 1;
81
+
82
+ if (lastIndex != toDeleteIndex) {
83
+ Selector lastSelector = set.selectors[lastIndex];
84
+ set.selectors[toDeleteIndex] = lastSelector;
85
+ set.at[lastSelector] = selectorIndex; // Replace lastValue's index to valueIndex
86
+ }
87
+
88
+ set.selectors.pop();
89
+ delete set.at[selector];
90
+ }
91
+
92
+ function isEmpty(Set storage set) external view returns(bool empty) {
93
+ return set.selectors.length == 0;
94
+ }
95
+
96
+ function contains(Set storage set, Selector selector) external view returns(bool inSet) {
97
+ return set.at[selector] > 0;
98
+ }
99
+
100
+ function size(Set storage set) external view returns(uint256 length) {
101
+ return set.selectors.length;
102
+ }
103
+
104
+ function at(Set storage set, uint256 index) external view returns(Selector selector) {
105
+ return set.selectors[index];
106
+ }
107
+ }
@@ -9,6 +9,7 @@ using {
9
9
  eqStateId as ==,
10
10
  neStateId as !=,
11
11
  StateIdLib.eqz,
12
+ StateIdLib.eq,
12
13
  StateIdLib.gtz,
13
14
  StateIdLib.toInt
14
15
  } for StateId global;
@@ -27,10 +28,18 @@ function DEPLOYING() pure returns (StateId) {
27
28
  return toStateId(3);
28
29
  }
29
30
 
30
- function ACTIVE() pure returns (StateId) {
31
+ function DEPLOYED() pure returns (StateId) {
31
32
  return toStateId(4);
32
33
  }
33
34
 
35
+ function ACTIVE() pure returns (StateId) {
36
+ return toStateId(5);
37
+ }
38
+
39
+ function SKIPPED() pure returns (StateId) {
40
+ return toStateId(6);
41
+ }
42
+
34
43
  function APPLIED() pure returns (StateId) {
35
44
  return toStateId(10);
36
45
  }
@@ -113,6 +122,11 @@ function neStateId(StateId a, StateId b) pure returns (bool isDifferent) {
113
122
 
114
123
  // library functions that operate on user defined type
115
124
  library StateIdLib {
125
+
126
+ function zero() public pure returns (StateId) {
127
+ return StateId.wrap(0);
128
+ }
129
+
116
130
  /// @dev Converts the NftId to a uint256.
117
131
  function toInt(StateId stateId) public pure returns (uint96) {
118
132
  return uint96(StateId.unwrap(stateId));
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
5
+
6
+ type Str is bytes32;
7
+
8
+ using {
9
+ StrEq as ==,
10
+ StrNe as !=,
11
+ StrLib.toString,
12
+ StrLib.length
13
+ } for Str global;
14
+
15
+ // pure free function needed for the operator overloading
16
+ function StrEq(Str s1, Str s2) pure returns (bool) {
17
+ return StrLib.eq(s1, s2);
18
+ }
19
+
20
+ // pure free function needed for the operator overloading
21
+ function StrNe(Str s1, Str s2) pure returns (bool) {
22
+ return StrLib.ne(s1, s2);
23
+ }
24
+
25
+ library StrLib {
26
+
27
+
28
+ /// @dev converts the provided string into a short string.
29
+ /// uses ShortStrings.toShortString
30
+ function toStr(string memory str) public pure returns (Str) {
31
+ return Str.wrap(ShortString.unwrap(ShortStrings.toShortString(str)));
32
+ }
33
+
34
+ /// @dev return true iff s1 equals s2
35
+ function eq(Str s1, Str s2) public pure returns (bool) {
36
+ return Str.unwrap(s1) == Str.unwrap(s2);
37
+ }
38
+
39
+ /// @dev return true iff s1 differs from s2
40
+ function ne(Str s1, Str s2) public pure returns (bool) {
41
+ return Str.unwrap(s1) != Str.unwrap(s2);
42
+ }
43
+
44
+ /// @dev return true iff s1 equals from s2
45
+ function eq(string memory s1, string memory s2) public pure returns (bool) {
46
+ return keccak256(bytes(s1)) == keccak256(bytes(s2));
47
+ }
48
+
49
+ /// @dev return true iff s1 differs s2
50
+ function ne(string memory s1, string memory s2) public pure returns (bool) {
51
+ return !eq(s1, s2);
52
+ }
53
+
54
+ /// @dev converts the provided short string into a string.
55
+ /// uses ShortStrings.toString
56
+ function toString(Str str) public pure returns (string memory) {
57
+ return ShortStrings.toString(ShortString.wrap(Str.unwrap(str)));
58
+ }
59
+
60
+ /// @dev converts the provided short string into a string.
61
+ /// uses ShortStrings.byteLength
62
+ function length(Str str) public pure returns (uint256 byteLength) {
63
+ return ShortStrings.byteLength(ShortString.wrap(Str.unwrap(str)));
64
+ }
65
+ }
@@ -3,6 +3,8 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Seconds} from "./Seconds.sol";
5
5
 
6
+ /// @dev Target: Cover 10 years with 1 ms block time resolution.
7
+ /// Typical block time resolution is 1s.
6
8
  type Timestamp is uint40;
7
9
 
8
10
  using {
@@ -12,6 +14,12 @@ using {
12
14
  lteTimestamp as <=,
13
15
  eqTimestamp as ==,
14
16
  neTimestamp as !=,
17
+ TimestampLib.eq,
18
+ TimestampLib.ne,
19
+ TimestampLib.gt,
20
+ TimestampLib.gte,
21
+ TimestampLib.lt,
22
+ TimestampLib.lte,
15
23
  TimestampLib.gtz,
16
24
  TimestampLib.eqz,
17
25
  TimestampLib.addSeconds,
@@ -48,11 +56,6 @@ function neTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
48
56
  return Timestamp.unwrap(a) != Timestamp.unwrap(b);
49
57
  }
50
58
 
51
- /// @dev Converts the uint256 to a Timestamp.
52
- function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
53
- return Timestamp.wrap(uint40(timestamp));
54
- }
55
-
56
59
  // TODO move to TimestampLib and rename to zero()
57
60
  /// @dev Return the Timestamp zero (0)
58
61
  function zeroTimestamp() pure returns (Timestamp) {
@@ -68,10 +71,14 @@ library TimestampLib {
68
71
  function max() public pure returns (Timestamp) {
69
72
  return Timestamp.wrap(type(uint40).max);
70
73
  }
71
-
72
- function blockTimestamp() public view returns (Timestamp) {
74
+
75
+ function current() public view returns (Timestamp) {
73
76
  return Timestamp.wrap(uint40(block.timestamp));
74
77
  }
78
+
79
+ function toTimestamp(uint256 timestamp) public pure returns (Timestamp) {
80
+ return Timestamp.wrap(uint40(timestamp));
81
+ }
75
82
 
76
83
  /// @dev return true if Timestamp a is after Timestamp b
77
84
  function gt(Timestamp a, Timestamp b) public pure returns (bool isAfter) {