@etherisc/gif-next 0.0.2-f752d2a-551 → 0.0.2-f78c672-338

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 (782) hide show
  1. package/README.md +322 -20
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1379 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/{shared/IOwnable.sol/IOwnable.json → authorization/AccessAdmin.sol/IAccessManagedChecker.json} +4 -4
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +542 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/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 +1130 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +350 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1230 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +589 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +951 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1580 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +868 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +850 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1071 -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 +1475 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2032 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1431 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2432 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +384 -1497
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +759 -0
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +415 -1667
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1929 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +661 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2463 -0
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1025 -0
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +744 -0
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3738 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  102. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  108. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  110. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  111. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  112. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  114. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +569 -0
  116. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  118. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +774 -0
  120. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  122. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +875 -0
  124. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  126. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  128. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  130. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +589 -0
  132. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1261 -0
  134. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +800 -0
  136. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +880 -0
  138. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +907 -0
  140. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1230 -0
  142. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  143. package/artifacts/contracts/pool/Pool.sol/Pool.json +1027 -0
  144. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  146. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1574 -0
  148. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +808 -0
  150. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +879 -0
  152. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +740 -0
  154. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  156. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +589 -0
  158. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1496 -0
  160. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +848 -0
  162. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +639 -0
  164. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1064 -0
  166. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +981 -0
  168. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +623 -0
  170. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1018 -0
  172. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +233 -230
  174. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1333 -0
  176. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  178. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +808 -0
  180. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.json +959 -0
  182. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +788 -0
  184. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  185. package/artifacts/contracts/product/Product.sol/Product.json +1119 -0
  186. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  188. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  190. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  192. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1024 -119
  194. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1043 -0
  196. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  197. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  198. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  200. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/Registry.sol/Registry.json +1450 -219
  202. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1928 -0
  204. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1269 -0
  206. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +735 -0
  208. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  210. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  212. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
  214. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  216. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  217. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  218. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  219. package/artifacts/contracts/shared/Component.sol/Component.json +707 -0
  220. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1571 -0
  222. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  224. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  229. package/artifacts/contracts/{instance/IInstanceLinked.sol/IInstanceLinked.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  234. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +632 -0
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1203 -0
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +709 -0
  240. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  241. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +140 -141
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  245. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +47 -74
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +229 -21
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  251. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  252. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  253. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IService.sol/IService.json} +198 -163
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +797 -0
  258. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  259. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  260. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  261. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  262. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  264. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  265. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +209 -0
  266. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  267. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  268. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +275 -18
  270. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  271. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  272. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  273. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/Service.sol/Service.json} +248 -171
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  278. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  279. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  280. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  281. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1447 -0
  282. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  283. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1096 -0
  284. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  286. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  287. package/artifacts/contracts/staking/Staking.sol/Staking.json +1849 -0
  288. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  290. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +788 -0
  292. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  294. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1301 -0
  296. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +732 -0
  298. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  300. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  301. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  302. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  303. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  304. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  306. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  308. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  310. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  312. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  314. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  316. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  318. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  320. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  322. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  324. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  326. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  328. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  330. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  332. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  334. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  340. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  342. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  344. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  346. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  348. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  350. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +113 -0
  352. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  354. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  356. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  358. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  360. package/contracts/accounting/AccountingService.sol +262 -0
  361. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  362. package/contracts/accounting/IAccountingService.sol +45 -0
  363. package/contracts/authorization/AccessAdmin.sol +689 -0
  364. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  365. package/contracts/authorization/Authorization.sol +337 -0
  366. package/contracts/authorization/IAccess.sol +49 -0
  367. package/contracts/authorization/IAccessAdmin.sol +143 -0
  368. package/contracts/authorization/IAuthorization.sol +74 -0
  369. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  370. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  371. package/contracts/distribution/BasicDistribution.sol +142 -0
  372. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  373. package/contracts/distribution/Distribution.sol +250 -0
  374. package/contracts/distribution/DistributionService.sol +385 -0
  375. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  376. package/contracts/distribution/IDistributionComponent.sol +43 -0
  377. package/contracts/distribution/IDistributionService.sol +103 -0
  378. package/contracts/examples/fire/DamageLevel.sol +59 -0
  379. package/contracts/examples/fire/FirePool.sol +90 -0
  380. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  381. package/contracts/examples/fire/FireProduct.sol +437 -0
  382. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  383. package/contracts/examples/fire/FireUSD.sol +26 -0
  384. package/contracts/examples/unpermissioned/SimpleDistribution.sol +85 -0
  385. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  386. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  387. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  388. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  389. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  390. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  391. package/contracts/instance/BundleSet.sol +130 -0
  392. package/contracts/instance/IInstance.sol +63 -45
  393. package/contracts/instance/IInstanceService.sol +72 -0
  394. package/contracts/instance/Instance.sol +234 -55
  395. package/contracts/instance/InstanceAdmin.sol +437 -0
  396. package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
  397. package/contracts/instance/InstanceReader.sol +650 -0
  398. package/contracts/instance/InstanceService.sol +404 -0
  399. package/contracts/instance/InstanceServiceManager.sol +39 -0
  400. package/contracts/instance/InstanceStore.sol +298 -0
  401. package/contracts/instance/RiskSet.sol +118 -0
  402. package/contracts/instance/base/BalanceStore.sol +123 -0
  403. package/contracts/instance/base/Cloneable.sol +28 -0
  404. package/contracts/instance/base/ObjectCounter.sol +20 -0
  405. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  406. package/contracts/instance/base/ObjectSet.sol +77 -0
  407. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  408. package/contracts/instance/module/IBundle.sol +20 -0
  409. package/contracts/instance/module/IComponents.sol +51 -0
  410. package/contracts/instance/module/IDistribution.sol +44 -0
  411. package/contracts/instance/module/IPolicy.sol +85 -0
  412. package/contracts/instance/module/IRisk.sol +14 -0
  413. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  414. package/contracts/oracle/BasicOracle.sol +47 -0
  415. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  416. package/contracts/oracle/IOracle.sol +36 -0
  417. package/contracts/oracle/IOracleComponent.sol +33 -0
  418. package/contracts/oracle/IOracleService.sol +66 -0
  419. package/contracts/oracle/Oracle.sol +156 -0
  420. package/contracts/oracle/OracleService.sol +310 -0
  421. package/contracts/oracle/OracleServiceManager.sol +39 -0
  422. package/contracts/pool/BasicPool.sol +175 -0
  423. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  424. package/contracts/pool/BundleService.sol +395 -0
  425. package/contracts/pool/BundleServiceManager.sol +39 -0
  426. package/contracts/pool/IBundleService.sol +115 -0
  427. package/contracts/pool/IPoolComponent.sol +62 -0
  428. package/contracts/pool/IPoolService.sol +165 -0
  429. package/contracts/pool/Pool.sol +345 -0
  430. package/contracts/pool/PoolLib.sol +216 -0
  431. package/contracts/pool/PoolService.sol +757 -0
  432. package/contracts/pool/PoolServiceManager.sol +39 -0
  433. package/contracts/product/ApplicationService.sol +274 -0
  434. package/contracts/product/ApplicationServiceManager.sol +38 -0
  435. package/contracts/product/BasicProduct.sol +51 -0
  436. package/contracts/product/BasicProductAuthorization.sol +56 -0
  437. package/contracts/product/ClaimService.sol +632 -0
  438. package/contracts/product/ClaimServiceManager.sol +38 -0
  439. package/contracts/product/IApplicationService.sol +69 -0
  440. package/contracts/product/IClaimService.sol +135 -0
  441. package/contracts/product/IPolicyService.sol +95 -0
  442. package/contracts/product/IPricingService.sol +40 -0
  443. package/contracts/product/IProductComponent.sol +62 -0
  444. package/contracts/product/IRiskService.sol +33 -0
  445. package/contracts/product/PolicyService.sol +682 -0
  446. package/contracts/product/PolicyServiceLib.sol +65 -0
  447. package/contracts/product/PolicyServiceManager.sol +39 -0
  448. package/contracts/product/PricingService.sol +309 -0
  449. package/contracts/product/PricingServiceManager.sol +39 -0
  450. package/contracts/product/Product.sol +469 -0
  451. package/contracts/product/RiskService.sol +154 -0
  452. package/contracts/product/RiskServiceManager.sol +39 -0
  453. package/contracts/registry/ChainNft.sol +130 -40
  454. package/contracts/registry/IRegistry.sol +138 -29
  455. package/contracts/registry/IRegistryService.sol +62 -0
  456. package/contracts/registry/IRelease.sol +26 -0
  457. package/contracts/registry/ITransferInterceptor.sol +6 -0
  458. package/contracts/registry/Registry.sol +631 -282
  459. package/contracts/registry/RegistryAdmin.sol +354 -0
  460. package/contracts/registry/RegistryService.sol +241 -0
  461. package/contracts/registry/RegistryServiceManager.sol +53 -0
  462. package/contracts/registry/ReleaseAdmin.sol +245 -0
  463. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  464. package/contracts/registry/ReleaseRegistry.sol +511 -0
  465. package/contracts/registry/ServiceAuthorizationV3.sol +247 -0
  466. package/contracts/registry/TokenRegistry.sol +313 -0
  467. package/contracts/shared/Component.sol +227 -0
  468. package/contracts/shared/ComponentService.sol +692 -0
  469. package/contracts/shared/ComponentServiceManager.sol +38 -0
  470. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  471. package/contracts/shared/ContractLib.sol +253 -0
  472. package/contracts/shared/IComponent.sol +61 -0
  473. package/contracts/shared/IComponentService.sol +112 -0
  474. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  475. package/contracts/shared/IKeyValueStore.sol +54 -0
  476. package/contracts/{instance/base → shared}/ILifecycle.sol +6 -5
  477. package/contracts/shared/INftOwnable.sol +25 -0
  478. package/contracts/shared/IPolicyHolder.sol +35 -0
  479. package/contracts/shared/IRegisterable.sol +33 -20
  480. package/contracts/shared/IRegistryLinked.sol +11 -0
  481. package/contracts/shared/IService.sol +23 -0
  482. package/contracts/shared/InitializableERC165.sol +27 -0
  483. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  484. package/contracts/shared/KeyValueStore.sol +131 -0
  485. package/contracts/shared/Lifecycle.sol +88 -0
  486. package/contracts/shared/NftIdSet.sol +65 -0
  487. package/contracts/shared/NftOwnable.sol +127 -0
  488. package/contracts/shared/PolicyHolder.sol +62 -0
  489. package/contracts/shared/Registerable.sol +83 -60
  490. package/contracts/shared/RegistryLinked.sol +38 -0
  491. package/contracts/shared/Service.sol +65 -0
  492. package/contracts/shared/TokenHandler.sol +341 -0
  493. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  494. package/contracts/staking/IStaking.sol +165 -0
  495. package/contracts/staking/IStakingService.sol +165 -0
  496. package/contracts/staking/StakeManagerLib.sol +224 -0
  497. package/contracts/staking/Staking.sol +526 -0
  498. package/contracts/staking/StakingLifecycle.sol +23 -0
  499. package/contracts/staking/StakingManager.sol +52 -0
  500. package/contracts/staking/StakingReader.sol +190 -0
  501. package/contracts/staking/StakingService.sol +430 -0
  502. package/contracts/staking/StakingServiceManager.sol +45 -0
  503. package/contracts/staking/StakingStore.sol +605 -0
  504. package/contracts/staking/TargetManagerLib.sol +211 -0
  505. package/contracts/{types → type}/AddressSet.sol +1 -1
  506. package/contracts/type/Amount.sol +150 -0
  507. package/contracts/{types → type}/Blocknumber.sol +27 -3
  508. package/contracts/type/ClaimId.sol +80 -0
  509. package/contracts/type/DistributorType.sol +55 -0
  510. package/contracts/type/Fee.sol +66 -0
  511. package/contracts/{types → type}/Key32.sol +10 -5
  512. package/contracts/type/Key32Set.sol +62 -0
  513. package/contracts/{types → type}/NftId.sol +28 -15
  514. package/contracts/type/NftIdSet.sol +62 -0
  515. package/contracts/type/ObjectType.sol +303 -0
  516. package/contracts/type/PayoutId.sol +82 -0
  517. package/contracts/type/Referral.sol +90 -0
  518. package/contracts/type/RequestId.sol +75 -0
  519. package/contracts/type/RiskId.sol +75 -0
  520. package/contracts/type/RoleId.sol +182 -0
  521. package/contracts/type/Seconds.sol +101 -0
  522. package/contracts/type/Selector.sol +107 -0
  523. package/contracts/{types → type}/StateId.sol +53 -5
  524. package/contracts/type/String.sol +53 -0
  525. package/contracts/{types → type}/Timestamp.sol +37 -19
  526. package/contracts/{types → type}/UFixed.sol +48 -12
  527. package/contracts/{types → type}/Version.sol +31 -6
  528. package/contracts/upgradeability/IVersionable.sol +53 -0
  529. package/contracts/upgradeability/ProxyManager.sol +232 -0
  530. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  531. package/contracts/upgradeability/Versionable.sol +59 -0
  532. package/package.json +13 -8
  533. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  534. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  535. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  536. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  537. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  538. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  539. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  540. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  541. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  542. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  543. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  544. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  545. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  546. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  547. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  548. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  549. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  550. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  551. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  552. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  553. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  554. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  556. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  558. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  560. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  562. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  564. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  566. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  568. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  570. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  572. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  574. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  576. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  578. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  579. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  580. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  581. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  582. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  583. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  584. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  585. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  587. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  588. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -326
  589. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  590. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  591. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  592. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  593. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  594. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  595. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  596. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  597. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  598. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  599. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  600. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  601. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  602. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  603. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  604. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  605. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  606. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  607. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  608. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  609. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  610. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  611. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  612. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  613. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  614. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  615. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  616. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  617. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  618. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  619. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  620. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  621. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  622. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  623. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  624. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  625. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  626. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  627. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  628. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  629. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  630. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  631. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  632. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  633. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  634. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  635. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  636. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  637. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  638. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  639. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  640. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  641. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  642. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  643. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  644. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  645. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  646. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  647. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  648. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  649. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  650. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  651. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  652. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  653. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  654. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  655. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  656. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  657. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  658. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  659. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  660. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  661. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  662. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  663. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  664. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  665. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  666. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  667. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  668. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  669. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  670. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  671. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  672. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  673. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  674. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  675. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  676. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  677. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  678. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  679. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  680. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  681. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  682. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  683. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  684. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  685. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  686. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  687. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  688. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  689. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  690. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  691. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  692. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  693. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  694. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  695. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  696. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  697. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  698. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  699. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  700. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  701. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  702. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  703. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  704. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  705. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  706. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  707. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  708. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  709. package/contracts/components/BaseComponent.sol +0 -88
  710. package/contracts/components/IBaseComponent.sol +0 -19
  711. package/contracts/components/IPoolComponent.sol +0 -57
  712. package/contracts/components/IProductComponent.sol +0 -19
  713. package/contracts/components/Pool.sol +0 -174
  714. package/contracts/components/Product.sol +0 -117
  715. package/contracts/experiment/errors/Require.sol +0 -38
  716. package/contracts/experiment/errors/Revert.sol +0 -44
  717. package/contracts/experiment/inheritance/A.sol +0 -53
  718. package/contracts/experiment/inheritance/B.sol +0 -28
  719. package/contracts/experiment/inheritance/C.sol +0 -34
  720. package/contracts/experiment/inheritance/IA.sol +0 -13
  721. package/contracts/experiment/inheritance/IB.sol +0 -10
  722. package/contracts/experiment/inheritance/IC.sol +0 -12
  723. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  724. package/contracts/experiment/statemachine/ISM.sol +0 -25
  725. package/contracts/experiment/statemachine/README.md +0 -112
  726. package/contracts/experiment/statemachine/SM.sol +0 -57
  727. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  728. package/contracts/experiment/types/TypeA.sol +0 -47
  729. package/contracts/experiment/types/TypeB.sol +0 -29
  730. package/contracts/instance/IInstanceLinked.sol +0 -8
  731. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  732. package/contracts/instance/base/IInstanceBase.sol +0 -14
  733. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  734. package/contracts/instance/base/IService.sol +0 -15
  735. package/contracts/instance/base/InstanceBase.sol +0 -80
  736. package/contracts/instance/base/KeyValueStore.sol +0 -156
  737. package/contracts/instance/base/Lifecycle.sol +0 -95
  738. package/contracts/instance/base/ModuleBase.sol +0 -52
  739. package/contracts/instance/base/ServiceBase.sol +0 -37
  740. package/contracts/instance/module/access/Access.sol +0 -149
  741. package/contracts/instance/module/access/IAccess.sol +0 -53
  742. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  743. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  744. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  745. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  746. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  747. package/contracts/instance/module/component/IComponent.sol +0 -53
  748. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  749. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  750. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  751. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  752. package/contracts/instance/module/risk/IRisk.sol +0 -10
  753. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  754. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  755. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  756. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  757. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  758. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  759. package/contracts/instance/service/IPoolService.sol +0 -30
  760. package/contracts/instance/service/IProductService.sol +0 -58
  761. package/contracts/instance/service/PoolService.sol +0 -123
  762. package/contracts/instance/service/ProductService.sol +0 -354
  763. package/contracts/registry/IChainNft.sol +0 -21
  764. package/contracts/registry/IRegistryLinked.sol +0 -8
  765. package/contracts/shared/ERC165.sol +0 -21
  766. package/contracts/shared/IOwnable.sol +0 -6
  767. package/contracts/shared/IVersionable.sol +0 -52
  768. package/contracts/shared/Versionable.sol +0 -89
  769. package/contracts/test/TestFee.sol +0 -25
  770. package/contracts/test/TestPool.sol +0 -22
  771. package/contracts/test/TestProduct.sol +0 -44
  772. package/contracts/test/TestRegisterable.sol +0 -19
  773. package/contracts/test/TestRoleId.sol +0 -14
  774. package/contracts/test/TestService.sol +0 -32
  775. package/contracts/test/TestToken.sol +0 -26
  776. package/contracts/test/TestVersion.sol +0 -44
  777. package/contracts/test/TestVersionable.sol +0 -17
  778. package/contracts/types/ChainId.sol +0 -38
  779. package/contracts/types/Fee.sol +0 -51
  780. package/contracts/types/NftIdSet.sol +0 -60
  781. package/contracts/types/ObjectType.sol +0 -115
  782. package/contracts/types/RoleId.sol +0 -38
@@ -0,0 +1,341 @@
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 {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
7
+
8
+ import {Amount, AmountLib} from "../type/Amount.sol";
9
+ import {ContractLib} from "../shared/ContractLib.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {SERVICE} from "../type/ObjectType.sol";
13
+
14
+
15
+ /// @dev Token specific transfer helper base contract.
16
+ /// A default token contract is provided via contract constructor.
17
+ /// Relies internally on OpenZeppelin SafeERC20.safeTransferFrom.
18
+ /// This base contract simplifies writing tests.
19
+ contract TokenHandlerBase {
20
+
21
+ // _setWallet
22
+ event LogTokenHandlerWalletAddressChanged(NftId componentNftId, address oldWallet, address newWallet);
23
+ event LogTokenHandlerWalletTokensTransferred(NftId componentNftId, address oldWallet, address newWallet, Amount amount);
24
+
25
+ // _approveTokenHandler
26
+ event LogTokenHandlerTokenApproved(NftId nftId, address tokenHandler, address token, Amount amount, bool isMaxAmount);
27
+
28
+ // _transfer
29
+ event LogTokenHandlerTokenTransfer(address token, address from, address to, Amount amount);
30
+
31
+ // constructor
32
+ error ErrorTokenHandlerNotRegistry(address registry);
33
+ error ErrorTokenHandlerComponentNotRegistered(address component);
34
+ error ErrorTokenHandlerTokenAddressZero();
35
+
36
+ // _setWallet
37
+ error ErrorTokenHandlerNewWalletAddressZero();
38
+ error ErrorTokenHandlerAddressIsSameAsCurrent();
39
+
40
+ // _approveTokenHandler
41
+ error ErrorTokenHandlerNotWallet(NftId nftId, address tokenHandler, address wallet);
42
+
43
+ // _checkPreconditions
44
+ error ErrorTokenHandlerBalanceTooLow(address token, address from, uint256 balance, uint256 expectedBalance);
45
+ error ErrorTokenHandlerAllowanceTooSmall(address token, address from, address spender, uint256 allowance, uint256 expectedAllowance);
46
+ error ErrorTokenHandlerAmountIsZero();
47
+
48
+ IRegistry public immutable REGISTRY;
49
+ IERC20Metadata public immutable TOKEN;
50
+ address public immutable COMPONENT;
51
+ NftId public immutable NFT_ID;
52
+
53
+ address internal _wallet;
54
+
55
+ constructor(
56
+ address registry,
57
+ address component,
58
+ address token
59
+ )
60
+ {
61
+ if (!ContractLib.isRegistry(registry)) {
62
+ revert ErrorTokenHandlerNotRegistry(registry);
63
+ }
64
+
65
+ if (token == address(0)) {
66
+ revert ErrorTokenHandlerTokenAddressZero();
67
+ }
68
+
69
+ REGISTRY = IRegistry(registry);
70
+ COMPONENT = component;
71
+ NFT_ID = REGISTRY.getNftIdForAddress(component);
72
+
73
+ if (NFT_ID.eqz()) {
74
+ revert ErrorTokenHandlerComponentNotRegistered(component);
75
+ }
76
+
77
+ TOKEN = IERC20Metadata(token);
78
+
79
+ // self approval of token handler to max amount
80
+ _approve(TOKEN, AmountLib.max());
81
+ }
82
+
83
+
84
+ /// @dev Checks the balance and allowance for the from address and amount.
85
+ /// When requiring amount > 0 set checkAmount to true.
86
+ function checkBalanceAndAllowance(
87
+ address from,
88
+ Amount amount,
89
+ bool checkAmount
90
+ )
91
+ external
92
+ view
93
+ {
94
+ _checkBalanceAndAllowance(from, amount, checkAmount);
95
+ }
96
+
97
+
98
+ /// @dev Returns the wallet linked to this TokenHandler.
99
+ function getWallet()
100
+ public
101
+ view
102
+ returns (address wallet)
103
+ {
104
+ if (_wallet == address(0)) {
105
+ return address(this);
106
+ }
107
+
108
+ return _wallet;
109
+ }
110
+
111
+
112
+ /// @dev Approves token handler to spend up to the specified amount of tokens.
113
+ /// Sets spending limit to type(uint256).max for AmountLib.max().
114
+ /// Reverts if wallet is not token handler itself.
115
+ /// Sets approvel using SareERC20.forceApprove internally.
116
+ function _approve(
117
+ IERC20Metadata token,
118
+ Amount amount
119
+ )
120
+ internal
121
+ {
122
+ // check that wallet is token handler contract itself
123
+ if(_wallet != address(0)) {
124
+ revert ErrorTokenHandlerNotWallet(NFT_ID, address(this), _wallet);
125
+ }
126
+
127
+ // update spending limit for AmountLib.max() to type(uint256).max
128
+ uint256 amountInt = amount.toInt();
129
+ bool isMaxAmount = false;
130
+ if (amount == AmountLib.max()) {
131
+ amountInt = type(uint256).max;
132
+ isMaxAmount = true;
133
+ }
134
+
135
+ emit LogTokenHandlerTokenApproved(NFT_ID, address(this), address(token), amount, isMaxAmount);
136
+
137
+ // execute approval
138
+ SafeERC20.forceApprove(
139
+ token,
140
+ address(this),
141
+ amountInt);
142
+ }
143
+
144
+
145
+ function _setWallet(address newWallet)
146
+ internal
147
+ {
148
+ address oldWallet = _wallet;
149
+ if (newWallet == oldWallet) {
150
+ revert ErrorTokenHandlerAddressIsSameAsCurrent();
151
+ }
152
+
153
+ // effects
154
+ address oldWalletForBalance = getWallet();
155
+ _wallet = newWallet;
156
+
157
+ emit LogTokenHandlerWalletAddressChanged(NFT_ID, oldWallet, newWallet);
158
+
159
+ // interactions
160
+ Amount balanceAmount = AmountLib.toAmount(
161
+ TOKEN.balanceOf(oldWalletForBalance));
162
+
163
+ if (balanceAmount.gtz()) {
164
+ // move tokens from old to new wallet
165
+ emit LogTokenHandlerWalletTokensTransferred(NFT_ID, oldWallet, newWallet, balanceAmount);
166
+
167
+ if (oldWallet == address(0)) {
168
+ // transfer from the component requires an allowance
169
+ _transfer(address(this), newWallet, balanceAmount, true);
170
+ } else if (newWallet == address(0)) {
171
+ _transfer(oldWallet, address(this), balanceAmount, true);
172
+ } else {
173
+ _transfer(oldWallet, newWallet, balanceAmount, true);
174
+ }
175
+ }
176
+ }
177
+
178
+
179
+ function _pullToken(address from, Amount amount)
180
+ internal
181
+ {
182
+ _transfer(from, getWallet(), amount, true);
183
+ }
184
+
185
+
186
+ function _pushToken(address to, Amount amount)
187
+ internal
188
+ {
189
+ _transfer(getWallet(), to, amount, true);
190
+ }
191
+
192
+
193
+ function _transfer(
194
+ address from,
195
+ address to,
196
+ Amount amount,
197
+ bool checkPreconditions
198
+ )
199
+ internal
200
+ {
201
+ if (checkPreconditions) {
202
+ bool checkAmount = true;
203
+ _checkBalanceAndAllowance(from, amount, checkAmount);
204
+ }
205
+
206
+ // transfer the tokens
207
+ emit LogTokenHandlerTokenTransfer(address(TOKEN), from, to, amount);
208
+
209
+ SafeERC20.safeTransferFrom(
210
+ TOKEN,
211
+ from,
212
+ to,
213
+ amount.toInt());
214
+ }
215
+
216
+
217
+ function _checkBalanceAndAllowance(
218
+ address from,
219
+ Amount amount,
220
+ bool checkAmount
221
+ )
222
+ internal
223
+ view
224
+ {
225
+ // amount must be greater than zero
226
+ if (checkAmount && amount.eqz()) {
227
+ revert ErrorTokenHandlerAmountIsZero();
228
+ }
229
+
230
+ // allowance must be >= amount
231
+ uint256 allowance = TOKEN.allowance(from, address(this));
232
+ if (allowance < amount.toInt()) {
233
+ revert ErrorTokenHandlerAllowanceTooSmall(address(TOKEN), from, address(this), allowance, amount.toInt());
234
+ }
235
+
236
+ // balance must be >= amount
237
+ uint256 balance = TOKEN.balanceOf(from);
238
+ if (balance < amount.toInt()) {
239
+ revert ErrorTokenHandlerBalanceTooLow(address(TOKEN), from, balance, amount.toInt());
240
+ }
241
+ }
242
+ }
243
+
244
+
245
+ /// @dev Token specific transfer helper.
246
+ /// Contract is derived from TokenHandlerBase and adds
247
+ /// authorization based on OpenZeppelin AccessManaged.
248
+ contract TokenHandler is
249
+ AccessManaged,
250
+ TokenHandlerBase
251
+ {
252
+
253
+ // onlyService
254
+ error ErrorTokenHandlerNotService(address service);
255
+
256
+ modifier onlyService() {
257
+ if (!REGISTRY.isObjectType(msg.sender, SERVICE())) {
258
+ revert ErrorTokenHandlerNotService(msg.sender);
259
+ }
260
+ _;
261
+ }
262
+
263
+ constructor(
264
+ address registry,
265
+ address component,
266
+ address token,
267
+ address authority
268
+ )
269
+ TokenHandlerBase(registry, component, token)
270
+ AccessManaged(authority)
271
+ { }
272
+
273
+ /// @dev sets the wallet address for the component.
274
+ /// if the current wallet has tokens, these will be transferred.
275
+ /// if the new wallet address is externally owned, an approval from the
276
+ /// owner of the external wallet to the tokenhandler of the component that
277
+ /// covers the current component balance must exist
278
+ function setWallet(address newWallet)
279
+ external
280
+ restricted()
281
+ onlyService()
282
+ {
283
+ _setWallet(newWallet);
284
+ }
285
+
286
+
287
+ /// @dev Approves token handler to spend up to the specified amount of tokens.
288
+ /// Sets spending limit to type(uint256).max for AmountLib.max().
289
+ /// Reverts if component wallet is not component itself.
290
+ /// Sets approvel using SareERC20.forceApprove internally.
291
+ function approve(
292
+ IERC20Metadata token,
293
+ Amount amount
294
+ )
295
+ external
296
+ restricted()
297
+ onlyService()
298
+ {
299
+ _approve(token, amount);
300
+ }
301
+
302
+ /// @dev Collect tokens from outside of GIF and transfer them to the wallet.
303
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
304
+ function pullToken(
305
+ address from,
306
+ Amount amount
307
+ )
308
+ external
309
+ restricted()
310
+ onlyService()
311
+ {
312
+ _pullToken(from, amount);
313
+ }
314
+
315
+
316
+ /// @dev Distribute tokens from a wallet within the scope of gif to some address.
317
+ function pushToken(
318
+ address to,
319
+ Amount amount
320
+ )
321
+ external
322
+ restricted()
323
+ onlyService()
324
+ {
325
+ _pushToken(to, amount);
326
+ }
327
+
328
+
329
+ /// @dev Distribute fee tokens from a wallet within the scope of gif to some address.
330
+ /// Separate push function for component service.
331
+ function pushFeeToken(
332
+ address to,
333
+ Amount amount
334
+ )
335
+ external
336
+ restricted()
337
+ onlyService()
338
+ {
339
+ _pushToken(to, amount);
340
+ }
341
+ }
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {TokenHandler} from "./TokenHandler.sol";
5
+
6
+ library TokenHandlerDeployerLib {
7
+
8
+ function deployTokenHandler(
9
+ address registry,
10
+ address component,
11
+ address token,
12
+ address authority
13
+ )
14
+ public
15
+ returns (TokenHandler)
16
+ {
17
+ return new TokenHandler(registry, component, token, authority);
18
+ }
19
+
20
+ }
@@ -0,0 +1,165 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IComponent} from "../shared/IComponent.sol";
6
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {Seconds} from "../type/Seconds.sol";
10
+ import {StakingReader} from "./StakingReader.sol";
11
+ import {StakingStore} from "./StakingStore.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+ import {UFixed} from "../type/UFixed.sol";
14
+
15
+ interface IStaking is
16
+ IComponent,
17
+ IVersionable
18
+ {
19
+ // staking rate
20
+ event LogStakingStakingRateSet(uint256 chainId, address token, UFixed oldStakingRate, UFixed newStakingRate);
21
+
22
+ // target parameters
23
+ event LogStakingLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
24
+ event LogStakingRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
25
+
26
+ // modifiers
27
+ error ErrorStakingNotStake(NftId stakeNftId);
28
+ error ErrorStakingNotTarget(NftId targetNftId);
29
+
30
+ error ErrorStakingNotStakingOwner();
31
+ error ErrorStakingNotNftOwner(NftId nftId);
32
+
33
+ // initializeTokenHandler
34
+ error ErrorStakingNotRegistry(address registry);
35
+
36
+ // staking rate
37
+ error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
38
+
39
+ // check dip balance and allowance
40
+ error ErrorStakingDipBalanceInsufficient(address owner, uint256 amount, uint256 dipBalance);
41
+ error ErrorStakingDipAllowanceInsufficient(address owner, address tokenHandler, uint256 amount, uint256 dipAllowance);
42
+
43
+ error ErrorStakingStakingReaderStakingMismatch(address stakingByStakingReader);
44
+ error ErrorStakingTargetAlreadyRegistered(NftId targetNftId);
45
+ error ErrorStakingTargetNftIdZero();
46
+ error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
47
+ error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
48
+ error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
49
+ error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
50
+ error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
51
+ error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
52
+ error ErrorStakingTargetNotFound(NftId targetNftId);
53
+ error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
54
+
55
+ error ErrorStakingTargetNotActive(NftId targetNftId);
56
+ error ErrorStakingStakeAmountZero(NftId targetNftId);
57
+
58
+ // info for individual stake
59
+ struct StakeInfo {
60
+ Timestamp lockedUntil;
61
+ }
62
+
63
+ struct TargetInfo {
64
+ ObjectType objectType;
65
+ uint256 chainId;
66
+ Seconds lockingPeriod;
67
+ UFixed rewardRate;
68
+ }
69
+
70
+ function initializeTokenHandler() external;
71
+
72
+ // staking rate management
73
+
74
+ /// @dev sets the rate that converts 1 token of total value locked into the
75
+ /// the required staked dip amount to back up the locked token value
76
+ function setStakingRate(uint256 chainId, address token, UFixed stakingRate) external;
77
+
78
+
79
+ // target management
80
+
81
+ function registerTarget(
82
+ NftId targetNftId,
83
+ ObjectType expectedObjectType,
84
+ uint256 chainId,
85
+ Seconds initialLockingPeriod,
86
+ UFixed initialRewardRate
87
+ ) external;
88
+
89
+
90
+ /// @dev set the stake locking period to the specified duration.
91
+ /// permissioned: only the staking service may call this function
92
+ function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod) external;
93
+
94
+ /// @dev update the target specific reward rate.
95
+ /// permissioned: only the staking service may call this function
96
+ function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
97
+
98
+ /// @dev (re)fills the staking reward reserves for the specified target
99
+ /// unpermissioned: anybody may fill up staking reward reserves
100
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
101
+
102
+ /// @dev defunds the staking reward reserves for the specified target
103
+ /// permissioned: only the staking service may call this function
104
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
105
+
106
+
107
+ /// @dev increases the total value locked amount for the specified target by the provided token amount.
108
+ /// function is called when a new policy is collateralized.
109
+ /// function restricted to the pool service.
110
+ function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
111
+
112
+
113
+ /// @dev decreases the total value locked amount for the specified target by the provided token amount.
114
+ /// function is called when a new policy is closed or payouts are executed.
115
+ /// function restricted to the pool service.
116
+ function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
117
+
118
+
119
+ function updateRemoteTvl(NftId targetNftId, address token, Amount amount) external;
120
+
121
+ // staking functions
122
+
123
+ /// @dev creat a new stake info object
124
+ /// permissioned: only staking service may call this function.
125
+ function createStake(NftId stakeNftId, NftId targetNftId, Amount dipAmount) external;
126
+
127
+ /// @dev increase the staked dip by dipAmount for the specified stake.
128
+ /// staking rewards are updated and added to the staked dips as well.
129
+ /// the function returns the new total amount of staked dips.
130
+ function stake(NftId stakeNftId, Amount dipAmount) external returns (Amount stakeBalance);
131
+
132
+ /// @dev restakes the dips to a new target.
133
+ /// the sum of the staked dips and the accumulated rewards will be restaked.
134
+ /// permissioned: only staking service may call this function.
135
+ function restake(NftId stakeNftId, NftId newTargetNftId) external returns (NftId newStakeNftId);
136
+
137
+ /// @dev retuns the specified amount of dips to the holder of the specified stake nft.
138
+ /// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to
139
+ /// permissioned: only staking service may call this function.
140
+ function unstake(NftId stakeNftId)
141
+ external
142
+ returns (
143
+ Amount unstakedAmount,
144
+ Amount rewardsClaimedAmount
145
+ );
146
+
147
+ /// @dev update stake rewards for current time.
148
+ /// may be called before an announement of a decrease of a reward rate reduction.
149
+ /// calling this functions ensures that reward balance is updated using the current (higher) reward rate.
150
+ /// unpermissioned.
151
+ function updateRewards(NftId stakeNftId) external;
152
+
153
+ /// @dev transfers all rewards accumulated so far to the holder of the specified stake nft.
154
+ /// permissioned: only staking service may call this function.
155
+ function claimRewards(NftId stakeNftId)
156
+ external
157
+ returns (
158
+ Amount rewardsClaimedAmount
159
+ );
160
+
161
+ //--- view and pure functions -------------------------------------------//
162
+
163
+ function getStakingStore() external view returns (StakingStore stakingStore);
164
+ function getStakingReader() external view returns (StakingReader reader);
165
+ }
@@ -0,0 +1,165 @@
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 {Amount} from "../type/Amount.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IStaking} from "./IStaking.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {Seconds} from "../type/Seconds.sol";
11
+ import {TokenHandler} from "../shared/TokenHandler.sol";
12
+ import {UFixed} from "../type/UFixed.sol";
13
+
14
+
15
+ interface IStakingService is IService
16
+ {
17
+
18
+ event LogStakingServiceProtocolTargetRegistered(NftId protocolNftId);
19
+ event LogStakingServiceInstanceTargetRegistered(NftId instanceNftId, uint256 chainId);
20
+ event LogStakingServiceLockingPeriodSet(NftId targetNftId, Seconds oldLockingDuration, Seconds lockingDuration);
21
+ event LogStakingServiceRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
22
+
23
+ event LogStakingServiceRewardReservesIncreased(NftId targetNftId, address rewardProvider, Amount dipAmount, Amount newBalance);
24
+ event LogStakingServiceRewardReservesDecreased(NftId targetNftId, address targetOwner, Amount dipAmount, Amount newBalance);
25
+
26
+ event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
27
+ event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
28
+ event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
29
+
30
+ event LogStakingServiceRewardsUpdated(NftId stakeNftId);
31
+ event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
32
+
33
+ // modifiers
34
+ error ErrorStakingServiceNotStakingOwner(address account);
35
+ error ErrorStakingServiceNotStaking(address stakingAddress);
36
+ error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
37
+
38
+ // create
39
+ error ErrorStakingServiceZeroTargetNftId();
40
+ error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
41
+ error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
42
+ error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
43
+ error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
44
+
45
+ /// @dev Set the protocol reward rate stake locking period to the specified duration.
46
+ /// Permissioned: only staking owner
47
+ // TODO implement
48
+ // function setProtocolRewardRate(UFixed rewardRate) external;
49
+ // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
50
+ // TODO also make sure that protocol rewards can be refilled and withdrawn
51
+
52
+ /// @dev Approves the staking token handler.
53
+ /// Reverts if the staking token handler wallet is not the token handler itself.
54
+ function approveTokenHandler(
55
+ IERC20Metadata token,
56
+ Amount amount
57
+ ) external;
58
+
59
+ /// @dev creates/registers an on-chain instance staking target.
60
+ /// function granted to instance service
61
+ function createInstanceTarget(
62
+ NftId targetNftId,
63
+ Seconds initialLockingPeriod,
64
+ UFixed initialRewardRate
65
+ ) external;
66
+
67
+ /// @dev Set the instance stake locking period to the specified duration.
68
+ /// Permissioned: Only owner of the specified target.
69
+ function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod) external;
70
+
71
+ /// @dev Set the instance reward rate to the specified value.
72
+ /// Permissioned: Only owner of the specified target.
73
+ function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
74
+
75
+ /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
76
+ /// unpermissioned: anybody may fill up staking reward reserves
77
+ function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
78
+
79
+ /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the sender
80
+ /// unpermissioned: anybody may fill up staking reward reserves
81
+ function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
82
+
83
+ /// @dev Defunds the staking reward reserves for the specified target
84
+ /// Permissioned: only the target owner may call this function
85
+ function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount) external returns (Amount newBalance);
86
+
87
+ /// @dev create a new stake with amount DIP to the specified target
88
+ /// returns the id of the newly minted stake nft
89
+ /// permissionless function
90
+ function create(
91
+ NftId targetNftId,
92
+ Amount amount
93
+ )
94
+ external
95
+ returns (
96
+ NftId stakeNftId
97
+ );
98
+
99
+
100
+ /// @dev increase an existing stake by amount DIP
101
+ /// updates and restakes the staking reward amount
102
+ /// function restricted to the current stake owner
103
+ function stake(
104
+ NftId stakeNftId,
105
+ Amount amount
106
+ )
107
+ external;
108
+
109
+
110
+ /// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
111
+ /// all related stakes and all accumulated reward DIP are transferred to the current stake holder
112
+ /// function restricted to the current stake owner
113
+ function restakeToNewTarget(
114
+ NftId stakeNftId,
115
+ NftId newTargetNftId
116
+ )
117
+ external
118
+ returns (
119
+ NftId newStakeNftId
120
+ );
121
+
122
+
123
+ /// @dev updates the reward balance of the stake using the current reward rate.
124
+ function updateRewards(
125
+ NftId stakeNftId
126
+ )
127
+ external;
128
+
129
+
130
+ /// @dev claims all available rewards.
131
+ function claimRewards(
132
+ NftId stakeNftId
133
+ )
134
+ external;
135
+
136
+
137
+ /// @dev unstakes all dips (stakes and rewards) of an existing stake.
138
+ /// function restricted to the current stake owner
139
+ function unstake(
140
+ NftId stakeNftId
141
+ )
142
+ external;
143
+
144
+
145
+ /// @dev sets total value locked data for a target contract on a different chain.
146
+ /// this is done via CCIP (cross chain communication)
147
+ function setTotalValueLocked(
148
+ NftId targetNftId,
149
+ address token,
150
+ Amount amount
151
+ )
152
+ external;
153
+
154
+ function getDipToken()
155
+ external
156
+ returns (IERC20Metadata dip);
157
+
158
+ function getTokenHandler()
159
+ external
160
+ returns (TokenHandler tokenHandler);
161
+
162
+ function getStaking()
163
+ external
164
+ returns (IStaking staking);
165
+ }