@etherisc/gif-next 0.0.2-952752e-374 → 0.0.2-957bd35-589

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 (491) hide show
  1. package/README.md +63 -312
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +690 -296
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +438 -35
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +529 -221
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +191 -21
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -154
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +427 -53
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -98
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +512 -204
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +167 -77
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -97
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +358 -82
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +109 -110
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +401 -59
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -142
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +426 -52
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +128 -178
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +426 -52
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -73
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +401 -59
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +360 -193
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +426 -52
  63. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  64. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  67. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  68. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +482 -28
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +355 -12
  73. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  74. package/artifacts/contracts/instance/Instance.sol/Instance.json +520 -85
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1037 -437
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -71
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +674 -487
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +387 -64
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -52
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1328 -2007
  87. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  88. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +33 -45
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +425 -54
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -31
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -31
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +401 -59
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +280 -209
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +134 -68
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +174 -87
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -41
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +306 -166
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -41
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +547 -340
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +162 -68
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +273 -50
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +123 -41
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +426 -52
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +137 -139
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -82
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +208 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +45 -23
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +133 -65
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +50 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -52
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +231 -19
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +245 -161
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +146 -80
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +116 -114
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +115 -65
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +40 -52
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +279 -43
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +111 -41
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +52 -22
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +90 -60
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +824 -430
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +933 -457
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +202 -126
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +19 -31
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +206 -252
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -72
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -31
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +111 -157
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -31
  243. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  254. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +62 -161
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  263. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1453 -153
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +187 -107
  266. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  267. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  268. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  269. package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -239
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +146 -67
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +229 -157
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -45
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
  282. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  283. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
  286. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.json +10 -10
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  291. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  302. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  306. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  315. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +9 -4
  317. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  319. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  321. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  323. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  325. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  328. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  330. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
  332. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  334. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
  336. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  337. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  338. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
  340. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  342. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  344. package/contracts/accounting/AccountingService.sol +15 -3
  345. package/contracts/accounting/IAccountingService.sol +4 -2
  346. package/contracts/authorization/AccessAdmin.sol +364 -344
  347. package/contracts/authorization/AccessAdminLib.sol +678 -0
  348. package/contracts/authorization/AccessManagerCloneable.sol +23 -32
  349. package/contracts/authorization/Authorization.sol +161 -260
  350. package/contracts/authorization/IAccess.sol +29 -12
  351. package/contracts/authorization/IAccessAdmin.sol +85 -83
  352. package/contracts/authorization/IAuthorization.sol +9 -43
  353. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  354. package/contracts/authorization/ServiceAuthorization.sol +228 -34
  355. package/contracts/distribution/BasicDistribution.sol +14 -13
  356. package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
  357. package/contracts/distribution/Distribution.sol +22 -64
  358. package/contracts/distribution/DistributionService.sol +166 -75
  359. package/contracts/distribution/IDistributionComponent.sol +3 -10
  360. package/contracts/distribution/IDistributionService.sol +34 -19
  361. package/contracts/examples/fire/FirePool.sol +0 -4
  362. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -1
  363. package/contracts/examples/fire/FireProduct.sol +7 -12
  364. package/contracts/examples/fire/FireProductAuthorization.sol +1 -1
  365. package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
  366. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +1 -1
  367. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  368. package/contracts/examples/unpermissioned/SimplePool.sol +0 -5
  369. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +1 -1
  370. package/contracts/examples/unpermissioned/SimpleProduct.sol +94 -27
  371. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +1 -1
  372. package/contracts/instance/BaseStore.sol +93 -0
  373. package/contracts/instance/IBaseStore.sol +37 -0
  374. package/contracts/instance/IInstance.sol +103 -13
  375. package/contracts/instance/IInstanceService.sol +54 -7
  376. package/contracts/instance/Instance.sol +177 -61
  377. package/contracts/instance/InstanceAdmin.sol +199 -218
  378. package/contracts/instance/InstanceAuthorizationV3.sol +120 -70
  379. package/contracts/instance/InstanceReader.sol +392 -382
  380. package/contracts/instance/InstanceService.sol +283 -173
  381. package/contracts/instance/InstanceStore.sol +153 -128
  382. package/contracts/instance/ProductStore.sol +290 -0
  383. package/contracts/instance/RiskSet.sol +10 -2
  384. package/contracts/instance/TargetNames.sol +10 -0
  385. package/contracts/instance/base/BalanceStore.sol +4 -6
  386. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  387. package/contracts/instance/module/IBundle.sol +6 -5
  388. package/contracts/instance/module/IComponents.sol +15 -6
  389. package/contracts/instance/module/IDistribution.sol +21 -8
  390. package/contracts/instance/module/IPolicy.sol +28 -8
  391. package/contracts/instance/module/IRisk.sol +2 -0
  392. package/contracts/oracle/BasicOracle.sol +3 -6
  393. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  394. package/contracts/oracle/IOracle.sol +9 -4
  395. package/contracts/oracle/Oracle.sol +4 -8
  396. package/contracts/oracle/OracleService.sol +8 -8
  397. package/contracts/pool/BasicPool.sol +4 -18
  398. package/contracts/pool/BasicPoolAuthorization.sol +29 -16
  399. package/contracts/pool/BundleService.sol +57 -96
  400. package/contracts/pool/IBundleService.sol +27 -32
  401. package/contracts/pool/IPoolService.sol +57 -40
  402. package/contracts/pool/Pool.sol +15 -29
  403. package/contracts/pool/PoolLib.sol +341 -0
  404. package/contracts/pool/PoolService.sol +189 -190
  405. package/contracts/product/ApplicationService.sol +85 -17
  406. package/contracts/product/BasicProduct.sol +2 -5
  407. package/contracts/product/BasicProductAuthorization.sol +31 -9
  408. package/contracts/product/ClaimService.sol +112 -194
  409. package/contracts/product/IApplicationService.sol +24 -2
  410. package/contracts/product/IClaimService.sol +6 -6
  411. package/contracts/product/IPolicyService.sol +20 -8
  412. package/contracts/product/IPricingService.sol +1 -0
  413. package/contracts/product/IRiskService.sol +25 -10
  414. package/contracts/product/PolicyService.sol +110 -201
  415. package/contracts/product/PolicyServiceLib.sol +139 -0
  416. package/contracts/product/PricingService.sol +33 -31
  417. package/contracts/product/Product.sol +61 -33
  418. package/contracts/product/RiskService.sol +63 -25
  419. package/contracts/registry/IRegistry.sol +17 -9
  420. package/contracts/registry/IRelease.sol +6 -3
  421. package/contracts/registry/Registry.sol +19 -9
  422. package/contracts/registry/RegistryAdmin.sol +85 -256
  423. package/contracts/registry/RegistryAuthorization.sol +337 -0
  424. package/contracts/registry/RegistryService.sol +1 -1
  425. package/contracts/registry/ReleaseAdmin.sol +70 -116
  426. package/contracts/registry/ReleaseRegistry.sol +57 -43
  427. package/contracts/registry/ServiceAuthorizationV3.sol +131 -31
  428. package/contracts/registry/TokenRegistry.sol +56 -52
  429. package/contracts/shared/Component.sol +19 -35
  430. package/contracts/shared/ComponentService.sol +281 -290
  431. package/contracts/shared/ContractLib.sol +137 -77
  432. package/contracts/shared/IComponent.sol +1 -4
  433. package/contracts/shared/IComponentService.sol +21 -26
  434. package/contracts/shared/INftOwnable.sol +2 -0
  435. package/contracts/shared/IRegisterable.sol +0 -1
  436. package/contracts/shared/InitializableERC165.sol +9 -1
  437. package/contracts/shared/InstanceLinkedComponent.sol +8 -13
  438. package/contracts/shared/NftOwnable.sol +4 -2
  439. package/contracts/shared/PolicyHolder.sol +3 -2
  440. package/contracts/shared/Registerable.sol +1 -4
  441. package/contracts/shared/Service.sol +6 -4
  442. package/contracts/shared/TokenHandler.sol +44 -91
  443. package/contracts/staking/IStaking.sol +265 -72
  444. package/contracts/staking/IStakingService.sol +45 -75
  445. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  446. package/contracts/staking/Staking.sol +475 -204
  447. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  448. package/contracts/staking/StakingManager.sol +4 -3
  449. package/contracts/staking/StakingReader.sol +58 -77
  450. package/contracts/staking/StakingService.sol +62 -180
  451. package/contracts/staking/StakingServiceManager.sol +6 -4
  452. package/contracts/staking/StakingStore.sol +1093 -330
  453. package/contracts/staking/TargetHandler.sol +132 -0
  454. package/contracts/staking/TargetManagerLib.sol +69 -46
  455. package/contracts/type/Amount.sol +4 -0
  456. package/contracts/type/Blocknumber.sol +17 -22
  457. package/contracts/type/ChainId.sol +101 -0
  458. package/contracts/type/Fee.sol +8 -8
  459. package/contracts/type/NftId.sol +3 -3
  460. package/contracts/type/ObjectType.sol +69 -52
  461. package/contracts/type/RiskId.sol +4 -3
  462. package/contracts/type/RoleId.sol +60 -45
  463. package/contracts/type/Seconds.sol +19 -0
  464. package/contracts/type/Selector.sol +5 -0
  465. package/contracts/type/String.sol +12 -0
  466. package/contracts/type/Timestamp.sol +4 -2
  467. package/contracts/type/UFixed.sol +28 -10
  468. package/contracts/type/Version.sol +39 -0
  469. package/contracts/upgradeability/IVersionable.sol +3 -0
  470. package/contracts/upgradeability/ProxyManager.sol +26 -12
  471. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  472. package/contracts/upgradeability/Versionable.sol +6 -3
  473. package/package.json +2 -2
  474. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  475. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  476. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  477. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  478. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  479. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  480. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  481. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  482. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  483. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  484. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  485. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  486. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  487. package/contracts/instance/module/IAccess.sol +0 -46
  488. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  489. package/contracts/shared/IKeyValueStore.sol +0 -54
  490. package/contracts/shared/KeyValueStore.sol +0 -131
  491. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -1,6 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {VersionPart} from "./Version.sol";
5
+
4
6
  type ObjectType is uint8;
5
7
 
6
8
  // type bindings
@@ -8,6 +10,7 @@ using {
8
10
  eqObjectType as ==,
9
11
  neObjectType as !=,
10
12
  ObjectTypeLib.toInt,
13
+ ObjectTypeLib.toName,
11
14
  ObjectTypeLib.eqz,
12
15
  ObjectTypeLib.eq,
13
16
  ObjectTypeLib.gtz
@@ -44,91 +47,113 @@ function INSTANCE() pure returns (ObjectType) {
44
47
  return ObjectType.wrap(10);
45
48
  }
46
49
 
50
+ /// @dev Generic component object type.
51
+ /// Component role id range is 11-19.
52
+ /// Stick to this range for new component object types.
47
53
  function COMPONENT() pure returns (ObjectType) {
48
54
  return ObjectType.wrap(11);
49
55
  }
50
56
 
51
- function ACCOUNTING() pure returns (ObjectType) {
57
+ /// @dev Product object type.
58
+ /// IMPORTANT the actual value has an influence on the corresponding role id (RoleIdLib.sol).
59
+ /// Do not change this value without updating the corresponding role id calculation.
60
+ function PRODUCT() pure returns (ObjectType) {
52
61
  return ObjectType.wrap(12);
53
62
  }
54
63
 
55
- function PRODUCT() pure returns (ObjectType) {
64
+ function ORACLE() pure returns (ObjectType) {
56
65
  return ObjectType.wrap(13);
57
66
  }
58
67
 
59
- function FEE() pure returns (ObjectType) {
68
+ function DISTRIBUTION() pure returns (ObjectType) {
60
69
  return ObjectType.wrap(14);
61
70
  }
62
71
 
63
- function ORACLE() pure returns (ObjectType) {
72
+ function POOL() pure returns (ObjectType) {
64
73
  return ObjectType.wrap(15);
65
74
  }
66
75
 
67
- function DISTRIBUTION() pure returns (ObjectType) {
68
- return ObjectType.wrap(16);
76
+ /// @dev Application object type.
77
+ /// Range for NFT objects created thorugh components is 20-29.
78
+ function APPLICATION() pure returns (ObjectType) {
79
+ return ObjectType.wrap(20);
69
80
  }
70
81
 
71
- function POOL() pure returns (ObjectType) {
72
- return ObjectType.wrap(17);
82
+ function POLICY() pure returns (ObjectType) {
83
+ return ObjectType.wrap(21);
73
84
  }
74
85
 
75
- function APPLICATION() pure returns (ObjectType) {
76
- return ObjectType.wrap(18);
86
+ function BUNDLE() pure returns (ObjectType) {
87
+ return ObjectType.wrap(22);
77
88
  }
78
89
 
79
- function POLICY() pure returns (ObjectType) {
80
- return ObjectType.wrap(19);
90
+ function DISTRIBUTOR() pure returns (ObjectType) {
91
+ return ObjectType.wrap(23);
81
92
  }
82
93
 
83
- function PREMIUM() pure returns (ObjectType) {
84
- return ObjectType.wrap(20);
94
+ /// @dev Stake object type.
95
+ /// NFT object type is 30
96
+ function STAKE() pure returns (ObjectType) {
97
+ return ObjectType.wrap(30);
85
98
  }
86
99
 
87
- function CLAIM() pure returns (ObjectType) {
88
- return ObjectType.wrap(21);
100
+ /// @dev Staking target object type.
101
+ function TARGET() pure returns (ObjectType) {
102
+ return ObjectType.wrap(31);
89
103
  }
90
104
 
91
- function PAYOUT() pure returns (ObjectType) {
92
- return ObjectType.wrap(22);
105
+ /// @dev Accounting object type.
106
+ /// Range for non-NFT types created through components is 40+
107
+ function ACCOUNTING() pure returns (ObjectType) {
108
+ return ObjectType.wrap(40);
93
109
  }
94
110
 
95
- function RISK() pure returns (ObjectType) {
96
- return ObjectType.wrap(23);
111
+ function FEE() pure returns (ObjectType) {
112
+ return ObjectType.wrap(41);
97
113
  }
98
114
 
99
115
  function PRICE() pure returns (ObjectType) {
100
- return ObjectType.wrap(24);
116
+ return ObjectType.wrap(42);
101
117
  }
102
118
 
103
- function REQUEST() pure returns (ObjectType) {
104
- return ObjectType.wrap(25);
119
+ function PREMIUM() pure returns (ObjectType) {
120
+ return ObjectType.wrap(43);
105
121
  }
106
122
 
107
- function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
108
- return ObjectType.wrap(26);
123
+ function RISK() pure returns (ObjectType) {
124
+ return ObjectType.wrap(44);
109
125
  }
110
126
 
111
- function DISTRIBUTOR() pure returns (ObjectType) {
112
- return ObjectType.wrap(27);
127
+ function CLAIM() pure returns (ObjectType) {
128
+ return ObjectType.wrap(45);
113
129
  }
114
130
 
115
- function REFERRAL() pure returns (ObjectType) {
116
- return ObjectType.wrap(28);
131
+ function PAYOUT() pure returns (ObjectType) {
132
+ return ObjectType.wrap(46);
117
133
  }
118
134
 
119
- function BUNDLE() pure returns (ObjectType) {
120
- return ObjectType.wrap(29);
135
+ function REQUEST() pure returns (ObjectType) {
136
+ return ObjectType.wrap(47);
121
137
  }
122
138
 
123
- function TARGET() pure returns (ObjectType) {
124
- return ObjectType.wrap(30);
139
+ function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
140
+ return ObjectType.wrap(48);
125
141
  }
126
142
 
127
- function STAKE() pure returns (ObjectType) {
128
- return ObjectType.wrap(31);
143
+ function REFERRAL() pure returns (ObjectType) {
144
+ return ObjectType.wrap(49);
129
145
  }
130
146
 
147
+ /// @dev Object type for GIF core target roles.
148
+ function CORE() pure returns (ObjectType) {
149
+ return ObjectType.wrap(97);
150
+ }
131
151
 
152
+ /// @dev Object type for target roles of contracts outside the GIF framework.
153
+ /// Example: Custom supporting contracts for a product component.
154
+ function CUSTOM() pure returns (ObjectType) {
155
+ return ObjectType.wrap(98);
156
+ }
132
157
 
133
158
  /// @dev Object type that includes any other object type.
134
159
  /// Note that eq()/'==' does not take this property into account.
@@ -148,8 +173,6 @@ function neObjectType(ObjectType a, ObjectType b) pure returns (bool isSame) {
148
173
  // library functions that operate on user defined type
149
174
  library ObjectTypeLib {
150
175
 
151
- error ErrorVersionTooBig(uint256 version);
152
-
153
176
  function zero() public pure returns (ObjectType) {
154
177
  return ObjectType.wrap(0);
155
178
  }
@@ -190,6 +213,8 @@ library ObjectTypeLib {
190
213
  return "Registry";
191
214
  } else if (objectType == STAKING()) {
192
215
  return "Staking";
216
+ } else if (objectType == RELEASE()) {
217
+ return "Release";
193
218
  } else if (objectType == INSTANCE()) {
194
219
  return "Instance";
195
220
  } else if (objectType == COMPONENT()) {
@@ -226,23 +251,20 @@ library ObjectTypeLib {
226
251
  toInt(objectType))));
227
252
  }
228
253
 
254
+ // TODO move to IService
229
255
  function toVersionedName(
230
256
  string memory name,
231
257
  string memory suffix,
232
- uint256 version
258
+ VersionPart release
233
259
  )
234
260
  external
235
261
  pure
236
262
  returns (string memory versionedName)
237
263
  {
238
- if (version > maxNumReleases()) {
239
- revert ErrorVersionTooBig(version);
240
- }
264
+ string memory versionName = "V0";
241
265
 
242
- string memory versionName = "_v0";
243
-
244
- if (version >= 10) {
245
- versionName = "_v";
266
+ if (release.toInt() >= 10) {
267
+ versionName = "V";
246
268
  }
247
269
 
248
270
  versionedName = string(
@@ -250,12 +272,7 @@ library ObjectTypeLib {
250
272
  name,
251
273
  suffix,
252
274
  versionName,
253
- toString(version)));
254
- }
255
-
256
- /// @dev returns the max number of releases (major versions) this gif setup can handle.
257
- function maxNumReleases() public pure returns (uint8) {
258
- return 99;
275
+ release.toString()));
259
276
  }
260
277
 
261
278
  /// @dev returns the provied int as a string
@@ -273,7 +290,7 @@ library ObjectTypeLib {
273
290
  }
274
291
 
275
292
  bytes memory buffer = new bytes(digits);
276
- uint index = digits - 1;
293
+ uint256 index = digits - 1;
277
294
 
278
295
  temp = value;
279
296
  while (temp != 0) {
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {NftId} from "./NftId.sol";
5
6
  import {RISK} from "./ObjectType.sol";
6
7
 
7
8
  type RiskId is bytes8;
@@ -40,9 +41,9 @@ library RiskIdLib {
40
41
  return uint64(RiskId.unwrap(riskId));
41
42
  }
42
43
 
43
- // @dev Converts a risk id string into a risk id.
44
- function toRiskId(string memory risk) public pure returns (RiskId) {
45
- return RiskId.wrap(bytes8(keccak256(abi.encode(risk))));
44
+ // @dev Converts a risk id string with a product NftId into a risk id.
45
+ function toRiskId(NftId productNftId, bytes32 risk) public pure returns (RiskId) {
46
+ return RiskId.wrap(bytes8(keccak256(abi.encode(productNftId, risk))));
46
47
  }
47
48
 
48
49
  /// @dev Returns the key32 value for the specified risk id.
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
5
  import {ObjectType, ROLE} from "./ObjectType.sol";
6
- import {VersionPart} from "./Version.sol";
6
+ import {VersionPart, VersionPartLib} from "./Version.sol";
7
7
 
8
8
  type RoleId is uint64;
9
9
 
@@ -11,10 +11,10 @@ type RoleId is uint64;
11
11
  using {
12
12
  eqRoleId as ==,
13
13
  neRoleId as !=,
14
+ RoleIdLib.toInt,
15
+ RoleIdLib.isServiceRole,
14
16
  RoleIdLib.eqz,
15
- RoleIdLib.gtz,
16
- RoleIdLib.toInt
17
- // RoleIdLib.toKey32
17
+ RoleIdLib.gtz
18
18
  } for RoleId global;
19
19
 
20
20
  // general pure free functions
@@ -54,9 +54,14 @@ function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2)
54
54
  /// @dev role for registering remote staking targets and reporting remote total value locked amounts.
55
55
  function GIF_REMOTE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); }
56
56
 
57
+ // TODO check if/where this is really needed
57
58
  /// @dev role assigned to release registry, release specfic to lock/unlock a release
58
59
  function RELEASE_REGISTRY_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(4); }
59
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
60
65
  //--- GIF core contract roles (range: 200 - 9'900) --------------------------//
61
66
  // created and assigned during initial deployment for registry and staking
62
67
  // granting for instances and components in instance service
@@ -75,6 +80,8 @@ function RELEASE_REGISTRY_ROLE() pure returns (RoleId) { return RoleIdLib.toRole
75
80
  // - application service role (version 3): 2003
76
81
 
77
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)
78
85
  // assigned at component registration time
79
86
  // object type * 1000 + instane specific component counter
80
87
  // on any instance a maximum number of 999 components may be deployed
@@ -93,54 +100,72 @@ function CUSTOM_ROLE_MIN() pure returns (RoleId) { return RoleIdLib.toRoleId(100
93
100
 
94
101
  library RoleIdLib {
95
102
 
96
- uint64 public constant ALL_VERSIONS = 99;
97
- uint64 public constant SERVICE_DOMAIN_ROLE_FACTOR = 100;
98
- uint64 public constant COMPONENT_ROLE_FACTOR = 100;
99
- uint64 public constant CUSTOM_ROLE_MIN_INT = 1000000;
103
+ error ErrorRoleIdTooBig(uint256 roleId);
104
+
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
108
+
109
+ uint64 public constant SERVICE_ROLE_FACTOR = 1000;
100
110
 
101
111
  /// @dev Converts the RoleId to a uint.
102
112
  function zero() public pure returns (RoleId) {
103
113
  return RoleId.wrap(0);
104
114
  }
105
115
 
116
+
106
117
  /// @dev Converts an uint into a role id.
107
- function toRoleId(uint64 a) public pure returns (RoleId) {
108
- return RoleId.wrap(a);
109
- }
118
+ function toRoleId(uint256 a) public pure returns (RoleId) {
119
+ if (a > type(uint64).max) {
120
+ revert ErrorRoleIdTooBig(a);
121
+ }
110
122
 
111
- /// @dev Converts an uint into a component role id.
112
- function toComponentRoleId(ObjectType objectType, uint64 index) public pure returns (RoleId) {
113
- return toRoleId(COMPONENT_ROLE_FACTOR * uint64(objectType.toInt()) + index);
123
+ return RoleId.wrap(uint64(a));
114
124
  }
115
125
 
116
- /// @dev Converts an uint into a custom role id.
117
- function toCustomRoleId(uint64 index) public pure returns (RoleId) {
118
- return toRoleId(CUSTOM_ROLE_MIN_INT + index);
119
- }
120
126
 
121
- /// @dev Converts the role id to a uint.
122
- function toInt(RoleId a) public pure returns (uint64) {
123
- return uint64(RoleId.unwrap(a));
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;
124
134
  }
125
135
 
126
- /// @dev Converts an uint into a role id.
127
- /// Used for GIF core contracts.
128
- function roleForType(ObjectType objectType) public pure returns (RoleId) {
129
- return RoleId.wrap(SERVICE_DOMAIN_ROLE_FACTOR * uint64(objectType.toInt()));
136
+
137
+ function toGenericServiceRoleId(
138
+ ObjectType objectType
139
+ )
140
+ public
141
+ pure
142
+ returns (RoleId)
143
+ {
144
+ return toServiceRoleId(
145
+ objectType,
146
+ VersionPartLib.releaseMax());
130
147
  }
131
148
 
132
- /// @dev Converts an uint into a RoleId.
133
- /// Used for GIF core contracts.
134
- function roleForTypeAndVersion(ObjectType objectType, VersionPart majorVersion) public pure returns (RoleId) {
135
- return RoleId.wrap(
136
- uint64(SERVICE_DOMAIN_ROLE_FACTOR * objectType.toInt() + majorVersion.toInt()));
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);
137
164
  }
138
165
 
139
- /// @dev Converts an uint into a RoleId.
140
- /// Used for GIF core contracts.
141
- function roleForTypeAndAllVersions(ObjectType objectType) public pure returns (RoleId) {
142
- return RoleId.wrap(
143
- uint64(SERVICE_DOMAIN_ROLE_FACTOR * objectType.toInt() + ALL_VERSIONS));
166
+ /// @dev Converts the role id to a uint.
167
+ function toInt(RoleId a) public pure returns (uint64) {
168
+ return uint64(RoleId.unwrap(a));
144
169
  }
145
170
 
146
171
  /// @dev Returns true if the value is non-zero (> 0).
@@ -152,14 +177,4 @@ library RoleIdLib {
152
177
  function eqz(RoleId a) public pure returns (bool) {
153
178
  return RoleId.unwrap(a) == 0;
154
179
  }
155
-
156
- /// @dev Returns the key32 value for the specified id and object type.
157
- function toKey32(RoleId a) public pure returns (Key32 key) {
158
- return Key32Lib.toKey32(ROLE(), toKeyId(a));
159
- }
160
-
161
- /// @dev Returns the key id value for the specified id
162
- function toKeyId(RoleId a) public pure returns (KeyId keyId) {
163
- return KeyId.wrap(bytes31(uint248(RoleId.unwrap(a))));
164
- }
165
180
  }
@@ -1,10 +1,12 @@
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 >,
9
11
  SecondsAdd as +,
10
12
  SecondsLib.eqz,
@@ -20,6 +22,10 @@ function SecondsEq(Seconds duration1, Seconds duration2) pure returns (bool) {
20
22
  return SecondsLib.eq(duration1, duration2);
21
23
  }
22
24
 
25
+ function SecondsLt(Seconds duration1, Seconds duration2) pure returns (bool) {
26
+ return SecondsLib.lt(duration1, duration2);
27
+ }
28
+
23
29
  function SecondsGt(Seconds duration1, Seconds duration2) pure returns (bool) {
24
30
  return SecondsLib.gt(duration1, duration2);
25
31
  }
@@ -45,6 +51,10 @@ library SecondsLib {
45
51
  return Seconds.wrap(24 * 3600);
46
52
  }
47
53
 
54
+ function fromDays(uint32 numberOfDays) public pure returns (Seconds duration) {
55
+ return Seconds.wrap(numberOfDays * 24 * 3600);
56
+ }
57
+
48
58
  function oneYear() public pure returns (Seconds duration) {
49
59
  return Seconds.wrap(365 * 24 * 3600);
50
60
  }
@@ -85,6 +95,15 @@ library SecondsLib {
85
95
  return Seconds.unwrap(duration1) < Seconds.unwrap(duration2);
86
96
  }
87
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
+
88
107
  /// @dev return add duration1 and duration2
89
108
  function add(Seconds duration1, Seconds duration2) public pure returns (Seconds) {
90
109
  return Seconds.wrap(Seconds.unwrap(duration1) + Seconds.unwrap(duration2));
@@ -8,6 +8,7 @@ using {
8
8
  eqSelector as ==,
9
9
  neSelector as !=,
10
10
  SelectorLib.toBytes4,
11
+ SelectorLib.toString,
11
12
  SelectorLib.eqz
12
13
  } for Selector global;
13
14
 
@@ -46,6 +47,10 @@ library SelectorLib {
46
47
  function toBytes4(Selector s) public pure returns (bytes4) {
47
48
  return Selector.unwrap(s);
48
49
  }
50
+
51
+ function toString(Selector s) public pure returns (string memory) {
52
+ return string(abi.encode(Selector.unwrap(s)));
53
+ }
49
54
  }
50
55
 
51
56
  // selector specific set library
@@ -12,10 +12,12 @@ using {
12
12
  StrLib.length
13
13
  } for Str global;
14
14
 
15
+ // pure free function needed for the operator overloading
15
16
  function StrEq(Str s1, Str s2) pure returns (bool) {
16
17
  return StrLib.eq(s1, s2);
17
18
  }
18
19
 
20
+ // pure free function needed for the operator overloading
19
21
  function StrNe(Str s1, Str s2) pure returns (bool) {
20
22
  return StrLib.ne(s1, s2);
21
23
  }
@@ -39,6 +41,16 @@ library StrLib {
39
41
  return Str.unwrap(s1) != Str.unwrap(s2);
40
42
  }
41
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
+
42
54
  /// @dev converts the provided short string into a string.
43
55
  /// uses ShortStrings.toString
44
56
  function toString(Str str) public pure returns (string memory) {
@@ -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 {
@@ -69,8 +71,8 @@ library TimestampLib {
69
71
  function max() public pure returns (Timestamp) {
70
72
  return Timestamp.wrap(type(uint40).max);
71
73
  }
72
-
73
- function blockTimestamp() public view returns (Timestamp) {
74
+
75
+ function current() public view returns (Timestamp) {
74
76
  return Timestamp.wrap(uint40(block.timestamp));
75
77
  }
76
78
 
@@ -3,8 +3,8 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
5
5
 
6
- /// @dev UFixed is a fixed point number with 18 decimals precision.
7
- type UFixed is uint256;
6
+ /// @dev UFixed is a 160-bit fixed point number with 15 decimals precision.
7
+ type UFixed is uint160;
8
8
 
9
9
  using {
10
10
  addUFixed as +,
@@ -18,6 +18,7 @@ using {
18
18
  eqUFixed as ==,
19
19
  neUFixed as !=,
20
20
  UFixedLib.gt,
21
+ UFixedLib.eqz,
21
22
  UFixedLib.gtz,
22
23
  UFixedLib.toInt,
23
24
  UFixedLib.toInt1000
@@ -41,7 +42,7 @@ function subUFixed(UFixed a, UFixed b) pure returns (UFixed) {
41
42
 
42
43
  function mulUFixed(UFixed a, UFixed b) pure returns (UFixed) {
43
44
  return
44
- UFixed.wrap(Math.mulDiv(UFixed.unwrap(a), UFixed.unwrap(b), 10 ** 18));
45
+ UFixed.wrap(uint160(Math.mulDiv(UFixed.unwrap(a), UFixed.unwrap(b), 10 ** 15)));
45
46
  }
46
47
 
47
48
  function divUFixed(UFixed a, UFixed b) pure returns (UFixed) {
@@ -50,7 +51,7 @@ function divUFixed(UFixed a, UFixed b) pure returns (UFixed) {
50
51
  }
51
52
 
52
53
  return
53
- UFixed.wrap(Math.mulDiv(UFixed.unwrap(a), 10 ** 18, UFixed.unwrap(b)));
54
+ UFixed.wrap(uint160(Math.mulDiv(UFixed.unwrap(a), 10 ** 15, UFixed.unwrap(b))));
54
55
  }
55
56
 
56
57
  function gtUFixed(UFixed a, UFixed b) pure returns (bool isGreaterThan) {
@@ -100,7 +101,9 @@ library UFixedLib {
100
101
  error UFixedLibExponentTooSmall(int8 exp);
101
102
  error UFixedLibExponentTooLarge(int8 exp);
102
103
 
103
- int8 public constant EXP = 18;
104
+ error UFixedLibNumberTooLarge(uint256 number);
105
+
106
+ int8 public constant EXP = 15;
104
107
  uint256 public constant MULTIPLIER = 10 ** uint256(int256(EXP));
105
108
  uint256 public constant MULTIPLIER_HALF = MULTIPLIER / 2;
106
109
 
@@ -119,9 +122,14 @@ library UFixedLib {
119
122
  return uint8(2);
120
123
  }
121
124
 
122
- /// @dev Converts the uint256 to a UFixed.
125
+ /// @dev Converts the uint256 to a uint160 based UFixed.
126
+ /// This method reverts if the number is too large to fit in a uint160.
123
127
  function toUFixed(uint256 a) public pure returns (UFixed) {
124
- return UFixed.wrap(a * MULTIPLIER);
128
+ uint256 n = a * MULTIPLIER;
129
+ if (n > type(uint160).max) {
130
+ revert UFixedLibNumberTooLarge(a);
131
+ }
132
+ return UFixed.wrap(uint160(n));
125
133
  }
126
134
 
127
135
  /// @dev Converts the uint256 to a UFixed with given exponent.
@@ -129,11 +137,17 @@ library UFixedLib {
129
137
  if (EXP + exp < 0) {
130
138
  revert UFixedLibExponentTooSmall(exp);
131
139
  }
132
- if (EXP + exp > 64) {
140
+ if (EXP + exp > 48) {
133
141
  revert UFixedLibExponentTooLarge(exp);
134
142
  }
135
143
 
136
- return UFixed.wrap(a * 10 ** uint8(EXP + exp));
144
+ uint256 n = a * 10 ** uint8(EXP + exp);
145
+
146
+ if (n > type(uint160).max) {
147
+ revert UFixedLibNumberTooLarge(n);
148
+ }
149
+
150
+ return UFixed.wrap(uint160(n));
137
151
  }
138
152
 
139
153
  /// @dev returns the decimals precision of the UFixed type
@@ -235,7 +249,11 @@ library UFixedLib {
235
249
  }
236
250
 
237
251
  function one() public pure returns (UFixed) {
238
- return UFixed.wrap(MULTIPLIER);
252
+ return UFixed.wrap(uint160(MULTIPLIER));
253
+ }
254
+
255
+ function max() public pure returns (UFixed) {
256
+ return UFixed.wrap(type(uint160).max);
239
257
  }
240
258
 
241
259
  /// @dev return the absolute delta between two UFixed numbers