@etherisc/gif-next 0.0.2-b1fb5f9 → 0.0.2-b2070b1-995

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 (696) hide show
  1. package/README.md +477 -21
  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/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  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 +1244 -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 +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +949 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +848 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  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 +1484 -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 +2053 -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/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1208 -0
  54. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1476 -0
  58. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
  60. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2609 -0
  62. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
  64. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  66. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  82. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  83. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  84. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  86. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  88. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  89. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +722 -449
  90. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1092 -0
  92. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  93. package/artifacts/contracts/instance/Instance.sol/Instance.json +800 -530
  94. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  95. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2284 -0
  96. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  97. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  98. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2740 -0
  100. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1338 -0
  102. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +772 -0
  104. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  105. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3378 -0
  106. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  107. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +1539 -0
  108. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  109. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  110. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  111. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  112. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  113. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  114. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  115. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  116. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  117. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  118. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  120. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  121. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  122. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  123. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  124. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  125. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  126. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  127. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  128. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  129. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  130. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  131. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  132. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  133. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  134. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  135. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  136. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +805 -0
  138. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  139. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  140. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  141. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  142. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  143. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  144. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  145. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  146. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  147. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  148. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  150. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  151. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  152. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  154. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  155. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  156. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  158. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  159. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  160. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  161. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +905 -0
  162. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  163. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  164. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  165. package/artifacts/contracts/pool/Pool.sol/Pool.json +1025 -0
  166. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  167. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  168. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  169. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  170. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  171. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  172. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  173. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  174. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  176. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  177. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  178. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  179. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  180. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  181. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  182. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  184. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  185. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  186. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  187. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  188. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  189. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  190. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  191. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  192. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  193. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1016 -0
  194. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  195. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +665 -0
  196. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  197. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  198. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  199. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  200. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  201. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  202. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  203. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  204. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  205. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  206. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  207. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  208. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  209. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  210. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  211. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  212. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  213. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  214. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1055 -113
  216. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  217. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1072 -0
  218. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  219. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → registry/IRelease.sol/IRelease.json} +6 -6
  220. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  221. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  222. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  223. package/artifacts/contracts/registry/Registry.sol/Registry.json +1543 -176
  224. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  225. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  226. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  227. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  228. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  229. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1298 -0
  230. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  231. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +773 -0
  232. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  233. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  234. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  236. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  237. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  238. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  239. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  240. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  241. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  242. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  243. package/artifacts/contracts/shared/Component.sol/Component.json +705 -0
  244. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  245. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  246. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  248. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  249. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  250. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  251. package/artifacts/contracts/{registry/IRegistry.sol/IOwnable.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  252. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  253. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  254. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  255. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  256. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +630 -0
  258. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  259. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  260. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  261. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  262. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  263. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +547 -0
  264. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  265. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  266. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  267. package/artifacts/contracts/{registry/IRegistry.sol/IRegisterable.json → shared/INftOwnable.sol/INftOwnable.json} +72 -72
  268. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  269. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  270. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  271. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IRegisterable.sol/IRegisterable.json} +179 -158
  272. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  273. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  274. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  275. package/artifacts/contracts/shared/IService.sol/IService.json +428 -0
  276. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  277. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  278. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  279. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  280. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  281. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +575 -0
  282. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  283. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  284. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  285. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  286. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  287. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +228 -0
  288. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  289. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  290. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  291. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +397 -0
  292. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  293. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  294. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  295. package/artifacts/contracts/shared/Service.sol/Service.json +482 -0
  296. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  297. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  298. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  299. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  300. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  301. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  302. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  303. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2757 -0
  304. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  305. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  306. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  307. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  308. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  309. package/artifacts/contracts/staking/Staking.sol/Staking.json +3185 -0
  310. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  311. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  312. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  313. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +847 -0
  314. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  315. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  316. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  317. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  318. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  319. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  320. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  321. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  322. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  323. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  324. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  325. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  326. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  327. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  328. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  330. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  332. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  334. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  336. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  338. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  340. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  342. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  343. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  344. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  346. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  347. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  348. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +238 -0
  350. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  352. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +161 -0
  354. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  355. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  356. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
  357. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
  358. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  359. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  360. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  361. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  362. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  363. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +308 -0
  364. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  365. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  366. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  367. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  368. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  369. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  370. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  371. package/artifacts/contracts/type/String.sol/StrLib.json +199 -0
  372. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  373. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +344 -0
  374. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  375. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  376. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  377. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  378. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  379. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  380. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  381. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  382. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  383. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  384. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  385. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  386. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  387. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  388. package/contracts/accounting/AccountingService.sol +274 -0
  389. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  390. package/contracts/accounting/IAccountingService.sol +47 -0
  391. package/contracts/authorization/AccessAdmin.sol +780 -0
  392. package/contracts/authorization/AccessAdminLib.sol +396 -0
  393. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  394. package/contracts/authorization/Authorization.sol +169 -0
  395. package/contracts/authorization/IAccess.sol +67 -0
  396. package/contracts/authorization/IAccessAdmin.sol +144 -0
  397. package/contracts/authorization/IAuthorization.sol +26 -0
  398. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  399. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  400. package/contracts/distribution/BasicDistribution.sol +141 -0
  401. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  402. package/contracts/distribution/Distribution.sol +247 -0
  403. package/contracts/distribution/DistributionService.sol +448 -0
  404. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  405. package/contracts/distribution/IDistributionComponent.sol +45 -0
  406. package/contracts/distribution/IDistributionService.sol +115 -0
  407. package/contracts/examples/fire/DamageLevel.sol +59 -0
  408. package/contracts/examples/fire/FirePool.sol +86 -0
  409. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  410. package/contracts/examples/fire/FireProduct.sol +433 -0
  411. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  412. package/contracts/examples/fire/FireUSD.sol +26 -0
  413. package/contracts/examples/flight/FlightOracle.sol +167 -0
  414. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  415. package/contracts/examples/flight/FlightPool.sol +89 -0
  416. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  417. package/contracts/examples/flight/FlightProduct.sol +728 -0
  418. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  419. package/contracts/examples/flight/FlightUSD.sol +26 -0
  420. package/contracts/examples/flight/originalV1.sol +396 -0
  421. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  422. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  423. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  424. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  425. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  426. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  427. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  428. package/contracts/instance/BaseStore.sol +93 -0
  429. package/contracts/instance/BundleSet.sol +130 -0
  430. package/contracts/instance/IBaseStore.sol +37 -0
  431. package/contracts/instance/IInstance.sol +155 -17
  432. package/contracts/instance/IInstanceService.sol +119 -0
  433. package/contracts/instance/Instance.sol +335 -48
  434. package/contracts/instance/InstanceAdmin.sol +379 -0
  435. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  436. package/contracts/instance/InstanceReader.sol +656 -0
  437. package/contracts/instance/InstanceService.sol +514 -0
  438. package/contracts/instance/InstanceServiceManager.sol +39 -0
  439. package/contracts/instance/InstanceStore.sol +268 -0
  440. package/contracts/instance/ProductStore.sol +119 -0
  441. package/contracts/instance/RiskSet.sol +126 -0
  442. package/contracts/instance/TargetNames.sol +10 -0
  443. package/contracts/instance/base/BalanceStore.sol +121 -0
  444. package/contracts/instance/base/Cloneable.sol +28 -0
  445. package/contracts/instance/base/ObjectCounter.sol +20 -0
  446. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  447. package/contracts/instance/base/ObjectSet.sol +77 -0
  448. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  449. package/contracts/instance/module/IBundle.sol +21 -0
  450. package/contracts/instance/module/IComponents.sol +62 -0
  451. package/contracts/instance/module/IDistribution.sol +54 -0
  452. package/contracts/instance/module/IPolicy.sol +105 -0
  453. package/contracts/instance/module/IRisk.sol +16 -0
  454. package/contracts/mock/Dip.sol +26 -0
  455. package/contracts/oracle/BasicOracle.sol +45 -0
  456. package/contracts/oracle/BasicOracleAuthorization.sol +52 -0
  457. package/contracts/oracle/IOracle.sol +41 -0
  458. package/contracts/oracle/IOracleComponent.sol +33 -0
  459. package/contracts/oracle/IOracleService.sol +66 -0
  460. package/contracts/oracle/Oracle.sol +154 -0
  461. package/contracts/oracle/OracleService.sol +310 -0
  462. package/contracts/oracle/OracleServiceManager.sol +39 -0
  463. package/contracts/pool/BasicPool.sol +162 -0
  464. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  465. package/contracts/pool/BundleService.sol +386 -0
  466. package/contracts/pool/BundleServiceManager.sol +39 -0
  467. package/contracts/pool/IBundleService.sol +116 -0
  468. package/contracts/pool/IPoolComponent.sol +62 -0
  469. package/contracts/pool/IPoolService.sol +170 -0
  470. package/contracts/pool/Pool.sol +333 -0
  471. package/contracts/pool/PoolLib.sol +341 -0
  472. package/contracts/pool/PoolService.sol +614 -0
  473. package/contracts/pool/PoolServiceManager.sol +39 -0
  474. package/contracts/product/ApplicationService.sol +327 -0
  475. package/contracts/product/ApplicationServiceManager.sol +38 -0
  476. package/contracts/product/BasicProduct.sol +49 -0
  477. package/contracts/product/BasicProductAuthorization.sol +64 -0
  478. package/contracts/product/ClaimService.sol +626 -0
  479. package/contracts/product/ClaimServiceManager.sol +38 -0
  480. package/contracts/product/IApplicationService.sol +88 -0
  481. package/contracts/product/IClaimService.sol +136 -0
  482. package/contracts/product/IPolicyService.sol +102 -0
  483. package/contracts/product/IPricingService.sol +40 -0
  484. package/contracts/product/IProductComponent.sol +62 -0
  485. package/contracts/product/IRiskService.sol +48 -0
  486. package/contracts/product/PolicyService.sol +645 -0
  487. package/contracts/product/PolicyServiceLib.sol +139 -0
  488. package/contracts/product/PolicyServiceManager.sol +39 -0
  489. package/contracts/product/PricingService.sol +306 -0
  490. package/contracts/product/PricingServiceManager.sol +39 -0
  491. package/contracts/product/Product.sol +493 -0
  492. package/contracts/product/RiskService.sol +190 -0
  493. package/contracts/product/RiskServiceManager.sol +39 -0
  494. package/contracts/registry/ChainNft.sol +175 -61
  495. package/contracts/registry/IRegistry.sol +143 -51
  496. package/contracts/registry/IRegistryService.sol +62 -0
  497. package/contracts/registry/IRelease.sol +29 -0
  498. package/contracts/registry/ITransferInterceptor.sol +6 -0
  499. package/contracts/registry/Registry.sol +667 -140
  500. package/contracts/registry/RegistryAdmin.sol +191 -0
  501. package/contracts/registry/RegistryAuthorization.sol +336 -0
  502. package/contracts/registry/RegistryService.sol +241 -0
  503. package/contracts/registry/RegistryServiceManager.sol +53 -0
  504. package/contracts/registry/ReleaseAdmin.sol +195 -0
  505. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  506. package/contracts/registry/ReleaseRegistry.sol +525 -0
  507. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  508. package/contracts/registry/TokenRegistry.sol +317 -0
  509. package/contracts/shared/Component.sol +214 -0
  510. package/contracts/shared/ComponentService.sol +687 -0
  511. package/contracts/shared/ComponentServiceManager.sol +38 -0
  512. package/contracts/shared/ContractLib.sol +312 -0
  513. package/contracts/shared/IComponent.sol +58 -0
  514. package/contracts/shared/IComponentService.sol +111 -0
  515. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  516. package/contracts/shared/IKeyValueStore.sol +62 -0
  517. package/contracts/shared/ILifecycle.sol +31 -0
  518. package/contracts/shared/INftOwnable.sol +27 -0
  519. package/contracts/shared/IPolicyHolder.sol +35 -0
  520. package/contracts/shared/IRegisterable.sol +36 -0
  521. package/contracts/shared/IRegistryLinked.sol +11 -0
  522. package/contracts/shared/IService.sol +23 -0
  523. package/contracts/shared/InitializableERC165.sol +35 -0
  524. package/contracts/shared/InstanceLinkedComponent.sol +234 -0
  525. package/contracts/shared/KeyValueStore.sol +131 -0
  526. package/contracts/shared/Lifecycle.sol +88 -0
  527. package/contracts/shared/NftIdSet.sol +65 -0
  528. package/contracts/shared/NftOwnable.sol +129 -0
  529. package/contracts/shared/PolicyHolder.sol +63 -0
  530. package/contracts/shared/Registerable.sol +106 -0
  531. package/contracts/shared/RegistryLinked.sol +38 -0
  532. package/contracts/shared/Service.sol +67 -0
  533. package/contracts/shared/TokenHandler.sol +342 -0
  534. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  535. package/contracts/staking/IStaking.sol +367 -0
  536. package/contracts/staking/IStakingService.sol +127 -0
  537. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  538. package/contracts/staking/Staking.sol +798 -0
  539. package/contracts/staking/StakingLib.sol +195 -0
  540. package/contracts/staking/StakingManager.sol +53 -0
  541. package/contracts/staking/StakingReader.sol +171 -0
  542. package/contracts/staking/StakingService.sol +321 -0
  543. package/contracts/staking/StakingServiceManager.sol +46 -0
  544. package/contracts/staking/StakingStore.sol +1368 -0
  545. package/contracts/staking/TargetHandler.sol +132 -0
  546. package/contracts/staking/TargetManagerLib.sol +234 -0
  547. package/contracts/type/AddressSet.sol +58 -0
  548. package/contracts/type/Amount.sol +154 -0
  549. package/contracts/{types → type}/Blocknumber.sol +36 -12
  550. package/contracts/type/ChainId.sol +101 -0
  551. package/contracts/type/ClaimId.sol +80 -0
  552. package/contracts/type/DistributorType.sol +55 -0
  553. package/contracts/type/Fee.sol +66 -0
  554. package/contracts/type/Key32.sol +50 -0
  555. package/contracts/type/Key32Set.sol +62 -0
  556. package/contracts/type/NftId.sol +85 -0
  557. package/contracts/type/NftIdSet.sol +62 -0
  558. package/contracts/type/ObjectType.sol +278 -0
  559. package/contracts/type/PayoutId.sol +82 -0
  560. package/contracts/type/Referral.sol +96 -0
  561. package/contracts/type/RequestId.sol +75 -0
  562. package/contracts/type/RequestIdSet.sol +62 -0
  563. package/contracts/type/RiskId.sol +75 -0
  564. package/contracts/type/RoleId.sol +180 -0
  565. package/contracts/type/Seconds.sol +124 -0
  566. package/contracts/type/Selector.sol +107 -0
  567. package/contracts/type/StateId.sol +149 -0
  568. package/contracts/type/String.sol +95 -0
  569. package/contracts/{types → type}/Timestamp.sol +62 -12
  570. package/contracts/{types → type}/UFixed.sol +97 -39
  571. package/contracts/type/Version.sol +159 -0
  572. package/contracts/upgradeability/IVersionable.sol +56 -0
  573. package/contracts/upgradeability/ProxyManager.sol +246 -0
  574. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  575. package/contracts/upgradeability/Versionable.sol +62 -0
  576. package/package.json +22 -7
  577. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  578. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  579. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  580. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  581. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  582. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  583. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  584. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  585. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  586. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  587. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  588. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  589. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  590. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  591. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  592. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  593. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  594. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  595. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  596. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  597. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  598. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  599. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  600. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  601. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  602. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  603. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  604. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  605. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  606. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  607. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  608. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  609. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  610. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  611. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  612. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  613. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  614. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  615. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  616. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  617. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  618. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  619. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  620. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  621. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  622. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  623. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  624. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  625. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  626. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  627. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  628. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  629. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  630. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  631. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  632. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  633. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  634. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  635. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  636. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  637. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  638. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  639. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  640. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  641. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  642. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  643. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  644. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  645. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  646. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  647. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  648. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  649. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  650. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  651. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  652. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  653. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  654. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  655. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  656. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  657. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  658. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  659. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  661. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  663. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  665. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  667. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  669. package/contracts/components/Component.sol +0 -60
  670. package/contracts/components/IPool.sol +0 -9
  671. package/contracts/components/IProduct.sol +0 -9
  672. package/contracts/components/Pool.sol +0 -22
  673. package/contracts/components/Product.sol +0 -55
  674. package/contracts/experiment/errors/Require.sol +0 -38
  675. package/contracts/experiment/errors/Revert.sol +0 -44
  676. package/contracts/experiment/inheritance/A.sol +0 -53
  677. package/contracts/experiment/inheritance/B.sol +0 -28
  678. package/contracts/experiment/inheritance/C.sol +0 -34
  679. package/contracts/experiment/inheritance/IA.sol +0 -13
  680. package/contracts/experiment/inheritance/IB.sol +0 -10
  681. package/contracts/experiment/inheritance/IC.sol +0 -12
  682. package/contracts/experiment/types/TypeA.sol +0 -47
  683. package/contracts/experiment/types/TypeB.sol +0 -29
  684. package/contracts/instance/access/Access.sol +0 -165
  685. package/contracts/instance/access/IAccess.sol +0 -63
  686. package/contracts/instance/component/ComponentModule.sol +0 -213
  687. package/contracts/instance/component/IComponent.sol +0 -73
  688. package/contracts/instance/policy/IPolicy.sol +0 -51
  689. package/contracts/instance/policy/PolicyModule.sol +0 -91
  690. package/contracts/instance/pool/IPoolModule.sol +0 -29
  691. package/contracts/instance/pool/PoolModule.sol +0 -73
  692. package/contracts/instance/product/IProductService.sol +0 -36
  693. package/contracts/instance/product/ProductService.sol +0 -112
  694. package/contracts/registry/IChainNft.sol +0 -21
  695. package/contracts/types/ChainId.sol +0 -38
  696. package/contracts/types/NftId.sol +0 -51
@@ -0,0 +1,132 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
5
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
+
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {ITargetLimitHandler} from "./ITargetLimitHandler.sol";
9
+
10
+ import {Amount, AmountLib} from "../type/Amount.sol";
11
+ import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {StakingStore} from "./StakingStore.sol";
14
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
15
+
16
+
17
+ contract TargetHandler is
18
+ Initializable,
19
+ AccessManaged,
20
+ ITargetLimitHandler
21
+ {
22
+
23
+ event LogTargetHandlerUpdateTriggersSet(uint16 tvlUpdatesTrigger, UFixed minTvlRatioTrigger, Blocknumber lastUpdateIn);
24
+
25
+ IRegistry private _registry;
26
+ StakingStore private _store;
27
+
28
+ /// @dev Update trigger value: Number of TVL updates below which limit updates are suppressed
29
+ uint16 private _tvlUpdatesTrigger;
30
+ /// @dev Maximum TVL ratio: Any ratio above this value will trigger a limit update
31
+ UFixed private _minTvlRatioTrigger;
32
+ Blocknumber private _lastUpdateIn;
33
+
34
+
35
+ constructor (
36
+ IRegistry registry,
37
+ StakingStore stakingStore
38
+ )
39
+ AccessManaged(msg.sender)
40
+ {
41
+ // set final authority and registry
42
+ setAuthority(registry.getAuthority());
43
+ _registry = registry;
44
+ _store = stakingStore;
45
+
46
+ // set default trigger values
47
+ _setUpdateTriggers(
48
+ 10, // check after 2 TVL updates
49
+ UFixedLib.toUFixed(1, -1)); // 10% deviation from baseline TVL
50
+ }
51
+
52
+
53
+ // TODO do we really need this?
54
+ // if so: add onlyDeployer (new base contract? also for reader)
55
+ // if not: remove oz intializer/initializable
56
+ function initialize()
57
+ external
58
+ initializer()
59
+ { }
60
+
61
+ //--- staking functions -------------------------------------------------------//
62
+
63
+ /// @dev Sets the TVL update triggers.
64
+ function setUpdateTriggers(
65
+ uint16 tvlUpdatesTrigger,
66
+ UFixed minTvlRatioTrigger
67
+ )
68
+ external
69
+ restricted()
70
+ {
71
+ _setUpdateTriggers(tvlUpdatesTrigger, minTvlRatioTrigger);
72
+ }
73
+
74
+ //--- ITargetLimitHandler -----------------------------------------------------//
75
+
76
+ /// @inheritdoc ITargetLimitHandler
77
+ // Current implementation only considers the TVL amounts.
78
+ // Future implementations may also consider target or token specific factors.
79
+ function isLimitUpdateRequired(
80
+ NftId, // targetNftId
81
+ address , // token
82
+ uint16 tvlUpdatesCount,
83
+ Amount baselineTvlAmount,
84
+ Amount currentTvlAmount
85
+ )
86
+ external
87
+ virtual
88
+ view
89
+ returns (bool updateIsRequired)
90
+ {
91
+ // no update required if below the TVL updates trigger
92
+ if (tvlUpdatesCount < _tvlUpdatesTrigger) {
93
+ return false;
94
+ }
95
+
96
+ // no update required if both amounts are zero
97
+ Amount zero = AmountLib.zero();
98
+ if (baselineTvlAmount == zero && currentTvlAmount == zero) {
99
+ return false;
100
+
101
+ // update required if one amount is zero
102
+ } else if (baselineTvlAmount == zero || currentTvlAmount == zero) {
103
+ return true;
104
+ }
105
+
106
+ // calculate the ratio of the current TVL amount to the baseline TVL amount
107
+ UFixed baseline = baselineTvlAmount.toUFixed();
108
+ UFixed current = currentTvlAmount.toUFixed();
109
+ UFixed ratio;
110
+
111
+ if (baseline > current) { ratio = baseline / current; }
112
+ else { ratio = current / baseline; }
113
+
114
+ // update required if the ratio is above the maximum TVL ratio
115
+ return ratio >= _minTvlRatioTrigger;
116
+ }
117
+
118
+
119
+ function _setUpdateTriggers(
120
+ uint16 tvlUpdatesTrigger,
121
+ UFixed minTvlRatioTrigger
122
+ )
123
+ internal
124
+ {
125
+ Blocknumber lastUpdateIn = _lastUpdateIn;
126
+ _tvlUpdatesTrigger = tvlUpdatesTrigger;
127
+ _minTvlRatioTrigger = minTvlRatioTrigger;
128
+ _lastUpdateIn = BlocknumberLib.current();
129
+
130
+ emit LogTargetHandlerUpdateTriggersSet(tvlUpdatesTrigger, minTvlRatioTrigger, lastUpdateIn);
131
+ }
132
+ }
@@ -0,0 +1,234 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IStaking} from "./IStaking.sol";
7
+
8
+ import {Amount, AmountLib} from "../type/Amount.sol";
9
+ import {ChainIdLib} from "../type/ChainId.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {IRegistryService} from "../registry/IRegistryService.sol";
12
+ import {IStaking} from "./IStaking.sol";
13
+ import {Key32} from "../type/Key32.sol";
14
+ import {NftId} from "../type/NftId.sol";
15
+ import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
16
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
17
+ import {StakingReader} from "./StakingReader.sol";
18
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
+
20
+
21
+ library TargetManagerLib {
22
+
23
+ function updateLockingPeriod(
24
+ IStaking staking,
25
+ NftId targetNftId,
26
+ Seconds lockingPeriod
27
+ )
28
+ external
29
+ view
30
+ returns (
31
+ Seconds oldLockingPeriod,
32
+ IStaking.TargetInfo memory targetInfo
33
+ )
34
+ {
35
+ StakingReader reader = staking.getStakingReader();
36
+
37
+ // check target exists
38
+ if(!reader.isTarget(targetNftId)) {
39
+ revert IStaking.ErrorStakingTargetNotFound(targetNftId);
40
+ }
41
+
42
+ ObjectType targetType = reader.getTargetInfo(targetNftId).objectType;
43
+ checkLockingPeriod(reader, targetNftId, targetType, lockingPeriod);
44
+
45
+ targetInfo = reader.getTargetInfo(targetNftId);
46
+ oldLockingPeriod = targetInfo.lockingPeriod;
47
+
48
+ targetInfo.lockingPeriod = lockingPeriod;
49
+ }
50
+
51
+
52
+ function updateRewardRate(
53
+ IStaking staking,
54
+ NftId targetNftId,
55
+ UFixed rewardRate
56
+ )
57
+ external
58
+ view
59
+ returns (
60
+ UFixed oldRewardRate,
61
+ IStaking.TargetInfo memory targetInfo
62
+ )
63
+ {
64
+ StakingReader reader = staking.getStakingReader();
65
+
66
+ // check target exists
67
+ if(!reader.isTarget(targetNftId)) {
68
+ revert IStaking.ErrorStakingTargetNotFound(targetNftId);
69
+ }
70
+
71
+ ObjectType targetType = reader.getTargetInfo(targetNftId).objectType;
72
+ checkRewardRate(reader, targetNftId, targetType, rewardRate);
73
+
74
+ targetInfo = reader.getTargetInfo(targetNftId);
75
+ oldRewardRate = targetInfo.rewardRate;
76
+
77
+ targetInfo.rewardRate = rewardRate;
78
+ }
79
+
80
+
81
+ function checkTargetParameters(
82
+ IRegistry registry,
83
+ StakingReader stakingReader,
84
+ NftId targetNftId,
85
+ ObjectType expectedObjectType,
86
+ Seconds lockingPeriod,
87
+ UFixed rewardRate
88
+ )
89
+ external
90
+ view
91
+ {
92
+ // target nft id must not be zero
93
+ if (targetNftId.eqz()) {
94
+ revert IStaking.ErrorStakingTargetNftIdZero();
95
+ }
96
+
97
+ // only accept "new" targets to be registered
98
+ if (stakingReader.isTarget(targetNftId)) {
99
+ revert IStaking.ErrorStakingTargetAlreadyRegistered(targetNftId);
100
+ }
101
+
102
+ // get setup info for additional checks
103
+ IStaking.SupportInfo memory supportInfo = stakingReader.getSupportInfo(expectedObjectType);
104
+
105
+ // check if type is supported and new targets of that type are allowed
106
+ if (!(supportInfo.isSupported && supportInfo.allowNewTargets)) {
107
+ revert IStaking.ErrorStakingTargetTypeNotSupported(targetNftId, expectedObjectType);
108
+ }
109
+
110
+ // check if cross chain targets are allowed (if applicable)
111
+ bool isCurrentChain = ChainIdLib.isCurrentChain(targetNftId);
112
+ if (!supportInfo.allowCrossChain && !isCurrentChain) {
113
+ revert IStaking.ErrorStakingCrossChainTargetsNotSupported(targetNftId, expectedObjectType);
114
+ }
115
+
116
+ // additional check for current chain target: target nft id must be known and registered with the expected object type
117
+ if (isCurrentChain) {
118
+ if (!registry.isRegistered(targetNftId)) {
119
+ revert IStaking.ErrorStakingTargetNotFound(targetNftId);
120
+ } else {
121
+ // check that expected object type matches with registered object type
122
+ ObjectType actualObjectType = registry.getObjectInfo(targetNftId).objectType;
123
+ if (actualObjectType != expectedObjectType) {
124
+ revert IStaking.ErrorStakingTargetUnexpectedObjectType(targetNftId, expectedObjectType, actualObjectType);
125
+ }
126
+ }
127
+ }
128
+
129
+ // check locking period and reward rate
130
+ _checkLockingPeriod(targetNftId, lockingPeriod, supportInfo);
131
+ _checkRewardRate(targetNftId, rewardRate, supportInfo);
132
+ }
133
+
134
+
135
+ function checkLockingPeriod(StakingReader reader, NftId targetNftId, ObjectType targetType, Seconds lockingPeriod)
136
+ public
137
+ view
138
+ {
139
+ IStaking.SupportInfo memory supportInfo = reader.getSupportInfo(targetType);
140
+ _checkLockingPeriod(targetNftId, lockingPeriod, supportInfo);
141
+ }
142
+
143
+
144
+ function checkRewardRate(StakingReader reader, NftId targetNftId, ObjectType targetType, UFixed rewardRate)
145
+ public
146
+ view
147
+ {
148
+ IStaking.SupportInfo memory supportInfo = reader.getSupportInfo(targetType);
149
+ _checkRewardRate(targetNftId, rewardRate, supportInfo);
150
+ }
151
+
152
+
153
+ function calculateRequiredDipAmount(
154
+ Amount tokenAmount,
155
+ UFixed stakingRate
156
+ )
157
+ public
158
+ pure
159
+ returns (Amount dipAmount)
160
+ {
161
+ dipAmount = tokenAmount.multiplyWith(stakingRate);
162
+ }
163
+
164
+
165
+ function calculateStakingRate(
166
+ IERC20Metadata dipToken,
167
+ IERC20Metadata token,
168
+ UFixed requiredDipPerToken
169
+ )
170
+ public
171
+ view
172
+ returns (UFixed stakingRate)
173
+ {
174
+ UFixed decimalsFactor = UFixedLib.toUFixed(1, int8(dipToken.decimals() - token.decimals()));
175
+ stakingRate = requiredDipPerToken * decimalsFactor;
176
+ }
177
+
178
+
179
+ function getMaxLockingPeriod() public pure returns (Seconds maxLockingPeriod) {
180
+ return SecondsLib.toSeconds(5 * 365 * 24 * 3600);
181
+ }
182
+
183
+
184
+ function getDefaultLockingPeriod() public pure returns (Seconds maxLockingPeriod) {
185
+ return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
186
+ }
187
+
188
+ /// @dev the minimum locking period is 24 hours
189
+ function getMinimumLockingPeriod() public pure returns (Seconds minLockingPeriod) {
190
+ return SecondsLib.toSeconds(24 * 3600);
191
+ }
192
+
193
+ function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
194
+ return UFixedLib.toUFixed(33, -2);
195
+ }
196
+
197
+
198
+ function getDefaultRewardRate() public pure returns (UFixed defaultRewardRate) {
199
+ return UFixedLib.toUFixed(5, -2);
200
+ }
201
+
202
+
203
+ function toTargetKey(NftId targetNftId) public pure returns (Key32 targetKey) {
204
+ return targetNftId.toKey32(TARGET());
205
+ }
206
+
207
+
208
+ function _checkLockingPeriod(NftId targetNftId, Seconds lockingPeriod, IStaking.SupportInfo memory supportInfo)
209
+ private
210
+ pure
211
+ {
212
+ if (lockingPeriod < supportInfo.minLockingPeriod || lockingPeriod > supportInfo.maxLockingPeriod) {
213
+ revert IStaking.ErrorStakingLockingPeriodInvalid(
214
+ targetNftId,
215
+ lockingPeriod,
216
+ supportInfo.minLockingPeriod,
217
+ supportInfo.maxLockingPeriod);
218
+ }
219
+ }
220
+
221
+
222
+ function _checkRewardRate(NftId targetNftId, UFixed rewardRate, IStaking.SupportInfo memory supportInfo)
223
+ private
224
+ pure
225
+ {
226
+ if (rewardRate < supportInfo.minRewardRate || rewardRate > supportInfo.maxRewardRate) {
227
+ revert IStaking.ErrorStakingRewardRateInvalid(
228
+ targetNftId,
229
+ rewardRate,
230
+ supportInfo.minRewardRate,
231
+ supportInfo.maxRewardRate);
232
+ }
233
+ }
234
+ }
@@ -0,0 +1,58 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ // based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/structs/EnumerableSet.sol
5
+ library LibAddressSet {
6
+
7
+ struct Set {
8
+ address[] elements;
9
+ mapping(address element => uint256 index) at;
10
+ }
11
+
12
+ function add(Set storage set, address element) external returns(bool added) {
13
+ if (set.at[element] == 0) {
14
+ set.elements.push(element);
15
+ set.at[element] = set.elements.length;
16
+ return true;
17
+ } else {
18
+ return false;
19
+ }
20
+ }
21
+
22
+ function remove(Set storage set, address element) external returns(bool removed) {
23
+ uint256 elementIndex = set.at[element];
24
+
25
+ if (elementIndex > 0) {
26
+ uint256 toDeleteIndex = elementIndex - 1;
27
+ uint256 lastIndex = set.elements.length - 1;
28
+
29
+ if (lastIndex != toDeleteIndex) {
30
+ address lastElement = set.elements[lastIndex];
31
+ set.elements[toDeleteIndex] = lastElement;
32
+ set.at[lastElement] = elementIndex; // Replace lastValue's index to valueIndex
33
+ }
34
+
35
+ set.elements.pop();
36
+ delete set.at[element];
37
+ return true;
38
+ }
39
+
40
+ return false;
41
+ }
42
+
43
+ function isEmpty(Set storage set) external view returns(bool empty) {
44
+ return set.elements.length == 0;
45
+ }
46
+
47
+ function contains(Set storage set, address element) external view returns(bool inSet) {
48
+ return set.at[element] > 0;
49
+ }
50
+
51
+ function getLength(Set storage set) external view returns(uint256 length) {
52
+ return set.elements.length;
53
+ }
54
+
55
+ function getElementAt(Set storage set, uint256 index) external view returns(address element) {
56
+ return set.elements[index];
57
+ }
58
+ }
@@ -0,0 +1,154 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {UFixed, UFixedLib} from "./UFixed.sol";
5
+
6
+ /// @dev Targets: 100 trillion (worlds GDP) with 6 decimal places
7
+ /// 3 trillion USD (total crypto market cap) with 12 decimal places.
8
+ /// 2023 100 trillion USD => 100e12 * 1e6 = 1e20
9
+ /// 2024 2 trillion crypto market cap => 2e12 * 1e18 = 2e30
10
+ type Amount is uint96;
11
+
12
+ using {
13
+ addAmount as +,
14
+ subAmount as -,
15
+ eqAmount as ==,
16
+ nqAmount as !=,
17
+ ltAmount as <,
18
+ ltAmount as <=,
19
+ gtAmount as >,
20
+ gteAmount as >=,
21
+ AmountLib.add,
22
+ AmountLib.eq,
23
+ AmountLib.eqz,
24
+ AmountLib.gtz,
25
+ AmountLib.gt,
26
+ AmountLib.gte,
27
+ AmountLib.multiplyWith,
28
+ AmountLib.toInt,
29
+ AmountLib.toUFixed
30
+ } for Amount global;
31
+
32
+ function addAmount(Amount a, Amount b) pure returns (Amount) {
33
+ return AmountLib.add(a, b);
34
+ }
35
+
36
+ function subAmount(Amount a, Amount b) pure returns (Amount) {
37
+ return AmountLib.sub(a, b);
38
+ }
39
+
40
+ function eqAmount(Amount a, Amount b) pure returns (bool) {
41
+ return AmountLib.eq(a, b);
42
+ }
43
+
44
+ function nqAmount(Amount a, Amount b) pure returns (bool) {
45
+ return !AmountLib.eq(a, b);
46
+ }
47
+
48
+ function ltAmount(Amount a, Amount b) pure returns (bool) {
49
+ return AmountLib.lt(a, b);
50
+ }
51
+
52
+ function lteAmount(Amount a, Amount b) pure returns (bool) {
53
+ return AmountLib.lte(a, b);
54
+ }
55
+
56
+ function gtAmount(Amount a, Amount b) pure returns (bool) {
57
+ return AmountLib.gt(a, b);
58
+ }
59
+
60
+ function gteAmount(Amount a, Amount b) pure returns (bool) {
61
+ return AmountLib.gte(a, b);
62
+ }
63
+
64
+ library AmountLib {
65
+
66
+ error ErrorAmountLibValueTooBig(uint256 amount);
67
+
68
+ function zero() public pure returns (Amount) {
69
+ return Amount.wrap(0);
70
+ }
71
+
72
+ function max() public pure returns (Amount) {
73
+ return Amount.wrap(_max());
74
+ }
75
+
76
+ /// @dev converts the uint amount into Amount
77
+ /// function reverts if value is exceeding max Amount value
78
+ function toAmount(uint256 amount) public pure returns (Amount) {
79
+ if(amount > _max()) {
80
+ revert ErrorAmountLibValueTooBig(amount);
81
+ }
82
+
83
+ return Amount.wrap(uint96(amount));
84
+ }
85
+
86
+ /// @dev return true if amount equals 0
87
+ function eqz(Amount amount) public pure returns (bool) {
88
+ return Amount.unwrap(amount) == 0;
89
+ }
90
+
91
+ /// @dev return true if amount1 equals amount2
92
+ function eq(Amount amount1, Amount amount2) public pure returns (bool) {
93
+ return Amount.unwrap(amount1) == Amount.unwrap(amount2);
94
+ }
95
+
96
+ /// @dev return true if amount a1 is less than a2
97
+ function lt(Amount a1, Amount a2) public pure returns (bool) {
98
+ return Amount.unwrap(a1) < Amount.unwrap(a2);
99
+ }
100
+
101
+ /// @dev return true if amount a1 is less or equal than a2
102
+ function lte(Amount a1, Amount a2) public pure returns (bool) {
103
+ return Amount.unwrap(a1) <= Amount.unwrap(a2);
104
+ }
105
+
106
+ /// @dev return true if amount a1 is greater than a2
107
+ function gt(Amount a1, Amount a2) public pure returns (bool) {
108
+ return Amount.unwrap(a1) > Amount.unwrap(a2);
109
+ }
110
+
111
+ /// @dev return true if amount a1 is greater or equal than a2
112
+ function gte(Amount a1, Amount a2) public pure returns (bool) {
113
+ return Amount.unwrap(a1) >= Amount.unwrap(a2);
114
+ }
115
+
116
+ /// @dev return minimum of a1 and a2.
117
+ function min(Amount a1, Amount a2) public pure returns (Amount) {
118
+ if (Amount.unwrap(a1) < Amount.unwrap(a2)) {
119
+ return a1;
120
+ }
121
+
122
+ return a2;
123
+ }
124
+
125
+ /// @dev return true if amount is larger than 0
126
+ function gtz(Amount amount) public pure returns (bool) {
127
+ return Amount.unwrap(amount) > 0;
128
+ }
129
+
130
+ function add(Amount a1, Amount a2) public pure returns (Amount) {
131
+ return Amount.wrap(Amount.unwrap(a1) + Amount.unwrap(a2));
132
+ }
133
+
134
+ function sub(Amount a1, Amount a2) public pure returns (Amount) {
135
+ return Amount.wrap(Amount.unwrap(a1) - Amount.unwrap(a2));
136
+ }
137
+
138
+ function toInt(Amount amount) public pure returns (uint256) {
139
+ return uint256(uint96(Amount.unwrap(amount)));
140
+ }
141
+
142
+ function toUFixed(Amount amount) public pure returns (UFixed) {
143
+ return UFixedLib.toUFixed(Amount.unwrap(amount));
144
+ }
145
+
146
+ function multiplyWith(Amount amount, UFixed factor) public pure returns (Amount) {
147
+ return toAmount((factor * UFixedLib.toUFixed(Amount.unwrap(amount))).toInt());
148
+ }
149
+
150
+ function _max() internal pure returns (uint96) {
151
+ // IMPORTANT: type nees to match with actual definition for Amount
152
+ return type(uint96).max;
153
+ }
154
+ }
@@ -1,7 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- type Blocknumber is uint32;
4
+ /// @dev Target: Cover 10 years with 1 ms block times.
5
+ /// Typical block times are a few seconds.
6
+ type Blocknumber is uint40;
5
7
 
6
8
  using {
7
9
  gtBlocknumber as >,
@@ -10,7 +12,15 @@ using {
10
12
  lteBlocknumber as <=,
11
13
  eqBlocknumber as ==,
12
14
  neBlocknumber as !=,
13
- BlocknumberLib.toInt
15
+ BlocknumberLib.toInt,
16
+ BlocknumberLib.eq,
17
+ BlocknumberLib.ne,
18
+ BlocknumberLib.eqz,
19
+ BlocknumberLib.gtz,
20
+ BlocknumberLib.gt,
21
+ BlocknumberLib.gte,
22
+ BlocknumberLib.lt,
23
+ BlocknumberLib.lte
14
24
  } for Blocknumber global;
15
25
 
16
26
  /// @dev return true if Blocknumber a is greater than Blocknumber b
@@ -48,21 +58,35 @@ function toBlocknumber(uint256 blocknum) pure returns (Blocknumber) {
48
58
  return Blocknumber.wrap(uint32(blocknum));
49
59
  }
50
60
 
51
- function blockBlocknumber() view returns (Blocknumber) {
52
- return toBlocknumber(block.number);
53
- }
54
-
55
- /// @dev Return the Blocknumber zero (0)
56
- function zeroBlocknumber() pure returns (Blocknumber) {
57
- return toBlocknumber(0);
58
- }
59
-
60
61
  /// @dev Return the current block number
61
62
  function blockNumber() view returns (Blocknumber) {
62
63
  return toBlocknumber(block.number);
63
64
  }
64
65
 
65
66
  library BlocknumberLib {
67
+
68
+ function zero() public pure returns (Blocknumber) {
69
+ return Blocknumber.wrap(0);
70
+ }
71
+
72
+ function max() public pure returns (Blocknumber) {
73
+ return Blocknumber.wrap(type(uint40).max);
74
+ }
75
+
76
+ function current() public view returns (Blocknumber) {
77
+ return Blocknumber.wrap(uint40(block.number));
78
+ }
79
+
80
+ /// @dev return true iff blocknumber is 0
81
+ function eqz(Blocknumber blocknumber) public pure returns (bool) {
82
+ return Blocknumber.unwrap(blocknumber) == 0;
83
+ }
84
+
85
+ /// @dev return true iff blocknumber is > 0
86
+ function gtz(Blocknumber blocknumber) public pure returns (bool) {
87
+ return Blocknumber.unwrap(blocknumber) > 0;
88
+ }
89
+
66
90
  /// @dev return true if Blocknumber a is greater than Blocknumber b
67
91
  function gt(
68
92
  Blocknumber a,