@etherisc/gif-next 0.0.2-80a82e6 → 0.0.2-8112a1f-745

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 (650) hide show
  1. package/README.md +483 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{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/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/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 +715 -455
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +1082 -0
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +793 -548
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2646 -0
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1328 -0
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +772 -0
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3792 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -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/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  102. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.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/{policy → module}/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/IRisk.sol/IRisk.json +10 -0
  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 +957 -0
  114. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -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 +772 -0
  120. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  122. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  124. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  126. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  128. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  130. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  132. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  134. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  136. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  138. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +905 -0
  140. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  142. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  143. package/artifacts/contracts/pool/Pool.sol/Pool.json +1025 -0
  144. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  146. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  148. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  150. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  152. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  154. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  156. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  158. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  160. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  162. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  164. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  166. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  168. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  170. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1016 -0
  172. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  173. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +665 -0
  174. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  176. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  178. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  180. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  182. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  184. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  185. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  186. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  188. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  190. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  192. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1055 -113
  194. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1072 -0
  196. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  197. package/artifacts/contracts/{instance/component/IComponent.sol/IInstanceLinked.json → registry/IRelease.sol/IRelease.json} +6 -6
  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 +1543 -176
  202. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
  204. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
  206. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1298 -0
  208. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +773 -0
  210. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  212. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  214. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  216. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  218. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  220. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  221. package/artifacts/contracts/shared/Component.sol/Component.json +705 -0
  222. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  224. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  229. package/artifacts/contracts/{registry/IRegistry.sol/IOwnable.json → shared/ContractLib.sol/IInstanceAdminHelper.json} +5 -5
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/ContractLib.sol/ITargetHelper.json} +4 -9
  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 +630 -0
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  240. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  241. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +510 -0
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  245. package/artifacts/contracts/{registry/IRegistry.sol/IRegisterable.json → shared/INftOwnable.sol/INftOwnable.json} +72 -72
  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 +4 -0
  249. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IRegisterable.sol/IRegisterable.json} +179 -158
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  251. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +5 -19
  252. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  253. package/artifacts/contracts/shared/IService.sol/IService.json +428 -0
  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 +795 -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 +228 -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 +4 -0
  269. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +397 -0
  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/shared/Service.sol/Service.json +482 -0
  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 +2360 -0
  282. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  283. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  284. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  285. package/artifacts/contracts/staking/Staking.sol/Staking.json +2820 -0
  286. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -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 +858 -0
  292. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +544 -0
  294. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  296. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  298. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2637 -0
  300. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  301. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +657 -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 +251 -0
  308. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  310. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  312. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  314. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  316. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  318. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  319. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  320. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  322. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  323. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  324. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  326. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  328. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  330. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  332. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  334. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  336. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  342. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  344. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  346. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  348. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  350. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  352. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  354. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  356. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  358. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  360. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  362. package/contracts/accounting/AccountingService.sol +274 -0
  363. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  364. package/contracts/accounting/IAccountingService.sol +47 -0
  365. package/contracts/authorization/AccessAdmin.sol +780 -0
  366. package/contracts/authorization/AccessAdminLib.sol +396 -0
  367. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  368. package/contracts/authorization/Authorization.sol +169 -0
  369. package/contracts/authorization/IAccess.sol +67 -0
  370. package/contracts/authorization/IAccessAdmin.sol +144 -0
  371. package/contracts/authorization/IAuthorization.sol +26 -0
  372. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  373. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  374. package/contracts/distribution/BasicDistribution.sol +141 -0
  375. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  376. package/contracts/distribution/Distribution.sol +247 -0
  377. package/contracts/distribution/DistributionService.sol +448 -0
  378. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  379. package/contracts/distribution/IDistributionComponent.sol +45 -0
  380. package/contracts/distribution/IDistributionService.sol +115 -0
  381. package/contracts/examples/fire/DamageLevel.sol +59 -0
  382. package/contracts/examples/fire/FirePool.sol +86 -0
  383. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  384. package/contracts/examples/fire/FireProduct.sol +433 -0
  385. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  386. package/contracts/examples/fire/FireUSD.sol +26 -0
  387. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  388. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  389. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  390. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  391. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  392. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  393. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  394. package/contracts/instance/BundleSet.sol +130 -0
  395. package/contracts/instance/IInstance.sol +140 -15
  396. package/contracts/instance/IInstanceService.sol +117 -0
  397. package/contracts/instance/Instance.sol +328 -45
  398. package/contracts/instance/InstanceAdmin.sol +383 -0
  399. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  400. package/contracts/instance/InstanceReader.sol +632 -0
  401. package/contracts/instance/InstanceService.sol +500 -0
  402. package/contracts/instance/InstanceServiceManager.sol +39 -0
  403. package/contracts/instance/InstanceStore.sol +298 -0
  404. package/contracts/instance/RiskSet.sol +126 -0
  405. package/contracts/instance/base/BalanceStore.sol +121 -0
  406. package/contracts/instance/base/Cloneable.sol +28 -0
  407. package/contracts/instance/base/ObjectCounter.sol +20 -0
  408. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  409. package/contracts/instance/base/ObjectSet.sol +77 -0
  410. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  411. package/contracts/instance/module/IBundle.sol +21 -0
  412. package/contracts/instance/module/IComponents.sol +62 -0
  413. package/contracts/instance/module/IDistribution.sol +54 -0
  414. package/contracts/instance/module/IPolicy.sol +105 -0
  415. package/contracts/instance/module/IRisk.sol +16 -0
  416. package/contracts/mock/Dip.sol +26 -0
  417. package/contracts/oracle/BasicOracle.sol +45 -0
  418. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  419. package/contracts/oracle/IOracle.sol +41 -0
  420. package/contracts/oracle/IOracleComponent.sol +33 -0
  421. package/contracts/oracle/IOracleService.sol +66 -0
  422. package/contracts/oracle/Oracle.sol +154 -0
  423. package/contracts/oracle/OracleService.sol +310 -0
  424. package/contracts/oracle/OracleServiceManager.sol +39 -0
  425. package/contracts/pool/BasicPool.sol +162 -0
  426. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  427. package/contracts/pool/BundleService.sol +386 -0
  428. package/contracts/pool/BundleServiceManager.sol +39 -0
  429. package/contracts/pool/IBundleService.sol +116 -0
  430. package/contracts/pool/IPoolComponent.sol +62 -0
  431. package/contracts/pool/IPoolService.sol +170 -0
  432. package/contracts/pool/Pool.sol +333 -0
  433. package/contracts/pool/PoolLib.sol +341 -0
  434. package/contracts/pool/PoolService.sol +614 -0
  435. package/contracts/pool/PoolServiceManager.sol +39 -0
  436. package/contracts/product/ApplicationService.sol +327 -0
  437. package/contracts/product/ApplicationServiceManager.sol +38 -0
  438. package/contracts/product/BasicProduct.sol +49 -0
  439. package/contracts/product/BasicProductAuthorization.sol +63 -0
  440. package/contracts/product/ClaimService.sol +630 -0
  441. package/contracts/product/ClaimServiceManager.sol +38 -0
  442. package/contracts/product/IApplicationService.sol +88 -0
  443. package/contracts/product/IClaimService.sol +136 -0
  444. package/contracts/product/IPolicyService.sol +102 -0
  445. package/contracts/product/IPricingService.sol +40 -0
  446. package/contracts/product/IProductComponent.sol +62 -0
  447. package/contracts/product/IRiskService.sol +48 -0
  448. package/contracts/product/PolicyService.sol +645 -0
  449. package/contracts/product/PolicyServiceLib.sol +139 -0
  450. package/contracts/product/PolicyServiceManager.sol +39 -0
  451. package/contracts/product/PricingService.sol +306 -0
  452. package/contracts/product/PricingServiceManager.sol +39 -0
  453. package/contracts/product/Product.sol +493 -0
  454. package/contracts/product/RiskService.sol +190 -0
  455. package/contracts/product/RiskServiceManager.sol +39 -0
  456. package/contracts/registry/ChainNft.sol +176 -100
  457. package/contracts/registry/IRegistry.sol +149 -47
  458. package/contracts/registry/IRegistryService.sol +62 -0
  459. package/contracts/registry/IRelease.sol +29 -0
  460. package/contracts/registry/ITransferInterceptor.sol +6 -0
  461. package/contracts/registry/Registry.sol +671 -117
  462. package/contracts/registry/RegistryAdmin.sol +188 -0
  463. package/contracts/registry/RegistryAuthorization.sol +309 -0
  464. package/contracts/registry/RegistryService.sol +241 -0
  465. package/contracts/registry/RegistryServiceManager.sol +53 -0
  466. package/contracts/registry/ReleaseAdmin.sol +195 -0
  467. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  468. package/contracts/registry/ReleaseRegistry.sol +525 -0
  469. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  470. package/contracts/registry/TokenRegistry.sol +317 -0
  471. package/contracts/shared/Component.sol +214 -0
  472. package/contracts/shared/ComponentService.sol +687 -0
  473. package/contracts/shared/ComponentServiceManager.sol +38 -0
  474. package/contracts/shared/ContractLib.sol +312 -0
  475. package/contracts/shared/IComponent.sol +58 -0
  476. package/contracts/shared/IComponentService.sol +111 -0
  477. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  478. package/contracts/shared/IKeyValueStore.sol +54 -0
  479. package/contracts/shared/ILifecycle.sol +31 -0
  480. package/contracts/shared/INftOwnable.sol +27 -0
  481. package/contracts/shared/IPolicyHolder.sol +35 -0
  482. package/contracts/shared/IRegisterable.sol +36 -0
  483. package/contracts/shared/IRegistryLinked.sol +11 -0
  484. package/contracts/shared/IService.sol +23 -0
  485. package/contracts/shared/InitializableERC165.sol +35 -0
  486. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  487. package/contracts/shared/KeyValueStore.sol +131 -0
  488. package/contracts/shared/Lifecycle.sol +88 -0
  489. package/contracts/shared/NftIdSet.sol +65 -0
  490. package/contracts/shared/NftOwnable.sol +129 -0
  491. package/contracts/shared/PolicyHolder.sol +63 -0
  492. package/contracts/shared/Registerable.sol +106 -0
  493. package/contracts/shared/RegistryLinked.sol +38 -0
  494. package/contracts/shared/Service.sol +67 -0
  495. package/contracts/shared/TokenHandler.sol +342 -0
  496. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  497. package/contracts/staking/IStaking.sol +264 -0
  498. package/contracts/staking/IStakingService.sol +127 -0
  499. package/contracts/staking/Staking.sol +746 -0
  500. package/contracts/staking/StakingLib.sol +195 -0
  501. package/contracts/staking/StakingLifecycle.sol +23 -0
  502. package/contracts/staking/StakingManager.sol +51 -0
  503. package/contracts/staking/StakingReader.sol +151 -0
  504. package/contracts/staking/StakingService.sol +321 -0
  505. package/contracts/staking/StakingServiceManager.sol +46 -0
  506. package/contracts/staking/StakingStore.sol +973 -0
  507. package/contracts/staking/TargetManagerLib.sol +211 -0
  508. package/contracts/type/AddressSet.sol +58 -0
  509. package/contracts/type/Amount.sol +154 -0
  510. package/contracts/type/Blocknumber.sol +142 -0
  511. package/contracts/type/ChainId.sol +101 -0
  512. package/contracts/type/ClaimId.sol +80 -0
  513. package/contracts/type/DistributorType.sol +55 -0
  514. package/contracts/type/Fee.sol +66 -0
  515. package/contracts/type/Key32.sol +50 -0
  516. package/contracts/type/Key32Set.sol +62 -0
  517. package/contracts/type/NftId.sol +85 -0
  518. package/contracts/type/NftIdSet.sol +62 -0
  519. package/contracts/type/ObjectType.sol +307 -0
  520. package/contracts/type/PayoutId.sol +82 -0
  521. package/contracts/type/Referral.sol +90 -0
  522. package/contracts/type/RequestId.sol +75 -0
  523. package/contracts/type/RiskId.sol +75 -0
  524. package/contracts/type/RoleId.sol +180 -0
  525. package/contracts/type/Seconds.sol +115 -0
  526. package/contracts/type/Selector.sol +107 -0
  527. package/contracts/type/StateId.sol +149 -0
  528. package/contracts/type/String.sol +65 -0
  529. package/contracts/type/Timestamp.sol +143 -0
  530. package/contracts/type/UFixed.sol +263 -0
  531. package/contracts/type/Version.sol +159 -0
  532. package/contracts/upgradeability/IVersionable.sol +56 -0
  533. package/contracts/upgradeability/ProxyManager.sol +246 -0
  534. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  535. package/contracts/upgradeability/Versionable.sol +62 -0
  536. package/package.json +26 -7
  537. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  538. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  539. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  540. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  541. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  542. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  543. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  544. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  545. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  546. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  547. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  548. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  549. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  550. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  551. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  553. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  555. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  557. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  559. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  561. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  563. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  565. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  566. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  567. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  568. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  569. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  570. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  571. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  572. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  573. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  574. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  575. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  576. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  577. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  578. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  579. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  580. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  581. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  582. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  584. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  585. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  586. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  587. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  588. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  589. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  591. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  592. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  593. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  594. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  595. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  596. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  597. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  598. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  599. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  600. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  601. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  602. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  603. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  604. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  605. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  606. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  607. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  608. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  609. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  610. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  611. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  612. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  613. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  614. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  615. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  616. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  617. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  618. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  619. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  621. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  623. package/contracts/components/Component.sol +0 -62
  624. package/contracts/components/IPool.sol +0 -9
  625. package/contracts/components/IProduct.sol +0 -12
  626. package/contracts/components/Pool.sol +0 -29
  627. package/contracts/components/Product.sol +0 -66
  628. package/contracts/experiment/errors/Require.sol +0 -33
  629. package/contracts/experiment/errors/Revert.sol +0 -39
  630. package/contracts/experiment/inheritance/A.sol +0 -56
  631. package/contracts/experiment/inheritance/B.sol +0 -23
  632. package/contracts/experiment/inheritance/C.sol +0 -28
  633. package/contracts/experiment/inheritance/IA.sol +0 -18
  634. package/contracts/experiment/inheritance/IB.sol +0 -9
  635. package/contracts/experiment/inheritance/IC.sol +0 -11
  636. package/contracts/experiment/types/TypeA.sol +0 -42
  637. package/contracts/experiment/types/TypeB.sol +0 -24
  638. package/contracts/instance/access/Access.sol +0 -218
  639. package/contracts/instance/access/IAccess.sol +0 -83
  640. package/contracts/instance/component/ComponentModule.sol +0 -248
  641. package/contracts/instance/component/IComponent.sol +0 -95
  642. package/contracts/instance/policy/IPolicy.sol +0 -66
  643. package/contracts/instance/policy/PolicyModule.sol +0 -107
  644. package/contracts/instance/pool/IPoolModule.sol +0 -41
  645. package/contracts/instance/pool/PoolModule.sol +0 -86
  646. package/contracts/instance/product/IProductService.sol +0 -46
  647. package/contracts/instance/product/ProductService.sol +0 -108
  648. package/contracts/registry/IChainNft.sol +0 -18
  649. package/contracts/types/ChainId.sol +0 -24
  650. package/contracts/types/NftId.sol +0 -32
@@ -0,0 +1,342 @@
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
+ /// Seeting the new wallet address to address(0) will set the wallet to the tokenHandler contract itself.
275
+ /// If the current wallet has tokens, these will be transferred.
276
+ /// If the new wallet address is externally owned, an approval from the
277
+ /// owner of the external wallet to the tokenhandler of the component that
278
+ /// covers the current component balance must exist.
279
+ function setWallet(address newWallet)
280
+ external
281
+ restricted()
282
+ onlyService()
283
+ {
284
+ _setWallet(newWallet);
285
+ }
286
+
287
+
288
+ /// @dev Approves token handler to spend up to the specified amount of tokens.
289
+ /// Sets spending limit to type(uint256).max for AmountLib.max().
290
+ /// Reverts if component wallet is not component itself.
291
+ /// Sets approvel using SareERC20.forceApprove internally.
292
+ function approve(
293
+ IERC20Metadata token,
294
+ Amount amount
295
+ )
296
+ external
297
+ restricted()
298
+ onlyService()
299
+ {
300
+ _approve(token, amount);
301
+ }
302
+
303
+ /// @dev Collect tokens from outside of GIF and transfer them to the wallet.
304
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
305
+ function pullToken(
306
+ address from,
307
+ Amount amount
308
+ )
309
+ external
310
+ restricted()
311
+ onlyService()
312
+ {
313
+ _pullToken(from, amount);
314
+ }
315
+
316
+
317
+ /// @dev Distribute tokens from a wallet within the scope of gif to some address.
318
+ function pushToken(
319
+ address to,
320
+ Amount amount
321
+ )
322
+ external
323
+ restricted()
324
+ onlyService()
325
+ {
326
+ _pushToken(to, amount);
327
+ }
328
+
329
+
330
+ /// @dev Distribute fee tokens from a wallet within the scope of gif to some address.
331
+ /// Separate push function for component service.
332
+ function pushFeeToken(
333
+ address to,
334
+ Amount amount
335
+ )
336
+ external
337
+ restricted()
338
+ onlyService()
339
+ {
340
+ _pushToken(to, amount);
341
+ }
342
+ }
@@ -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,264 @@
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 {IComponent} from "../shared/IComponent.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
+
9
+ import {Amount} from "../type/Amount.sol";
10
+ import {Blocknumber} from "../type/Blocknumber.sol";
11
+ import {ChainId} from "../type/ChainId.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {ObjectType} from "../type/ObjectType.sol";
14
+ import {Seconds} from "../type/Seconds.sol";
15
+ import {StakingReader} from "./StakingReader.sol";
16
+ import {StakingStore} from "./StakingStore.sol";
17
+ import {Timestamp} from "../type/Timestamp.sol";
18
+ import {UFixed} from "../type/UFixed.sol";
19
+ import {VersionPart} from "../type/Version.sol";
20
+
21
+
22
+ interface IStaking is
23
+ IComponent,
24
+ IVersionable
25
+ {
26
+
27
+ // owner functions
28
+ event LogStakingProtocolLockingPeriodSet(NftId targetNftId, Seconds newLockingPeriod, Seconds oldLockingPeriod, Blocknumber lastUpdatedIn);
29
+ event LogStakingProtocolRewardRateSet(NftId targetNftId, UFixed newRewardRate, UFixed oldRewardRate, Blocknumber lastUpdatedIn);
30
+ event LogStakingStakingRateSet(ChainId chainId, address token, UFixed newStakingRate, UFixed oldStakingRate, Blocknumber lastUpdatedIn);
31
+ event LogStakingStakingServiceSet(address stakingService, VersionPart release, address oldStakingService);
32
+ event LogStakingStakingReaderSet(address stakingReader, address oldStakingReader);
33
+ event LogStakingTokenHandlerApproved(address token, Amount approvalAmount, Amount oldApprovalAmount);
34
+
35
+ // token
36
+ event LogStakingTokenAdded(ChainId chainId, address token);
37
+ event LogStakingTargetTokenAdded(NftId targetNftId, ChainId chainId, address token);
38
+
39
+ // total value locked
40
+ event LogStakingTotalValueLockedIncreased(NftId targetNftId, address token, Amount amount, Amount newBalance);
41
+ event LogStakingTotalValueLockedDecreased(NftId targetNftId, address token, Amount amount, Amount newBalance);
42
+
43
+ // targets
44
+ event LogStakingTargetCreated(NftId targetNftId, ObjectType objectType, Seconds lockingPeriod, UFixed rewardRate, Amount maxStakedAmount);
45
+
46
+ // target parameters
47
+ event LogStakingTargetLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
48
+ event LogStakingTargetRewardRateSet(NftId targetNftId, UFixed rewardRate, UFixed oldRewardRate);
49
+ event LogStakingTargetMaxStakedAmountSet(NftId targetNftId, Amount maxStakedAmount);
50
+
51
+ // reward reserves
52
+ event LogStakingRewardReservesRefilled(NftId targetNftId, Amount dipAmount, address targetOwner, Amount reserveBalance, Blocknumber lastUpdateIn);
53
+ event LogStakingRewardReservesWithdrawn(NftId targetNftId, Amount dipAmount, address targetOwner, Amount reserveBalance, Blocknumber lastUpdateIn);
54
+ event LogStakingRewardReservesSpent(NftId targetNftId, Amount dipAmount, Amount reserveBalance, Blocknumber lastUpdateIn);
55
+
56
+ // stakes
57
+ event LogStakingStakeCreated(NftId stakeNftId, NftId targetNftId, Amount stakeAmount, Timestamp lockedUntil, address stakeOwner);
58
+ event LogStakingStakeRewardsUpdated(NftId stakeNftId, Amount rewardIncrementAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil);
59
+ event LogStakingRewardsRestaked(NftId stakeNftId, Amount restakedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil);
60
+ event LogStakingStaked(NftId stakeNftId, Amount stakedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil);
61
+ event LogStakingUnstaked(NftId stakeNftId, Amount unstakedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil);
62
+ event LogStakingRewardsClaimed(NftId stakeNftId, Amount claimedAmount, Amount stakeBalance, Amount rewardBalance, Timestamp lockedUntil);
63
+
64
+ event LogStakingStakeRestaked(NftId stakeNftId, NftId targetNftId, Amount stakeAmount, address owner, NftId oldStakeNftId);
65
+
66
+ // modifiers
67
+ error ErrorStakingNotStake(NftId stakeNftId);
68
+ error ErrorStakingNotTarget(NftId targetNftId);
69
+ error ErrorStakingNotOwner(NftId stakeNftId, address expectedOwner, address actualOwner);
70
+
71
+ error ErrorStakingNotStakingOwner();
72
+ error ErrorStakingNotNftOwner(NftId nftId);
73
+
74
+ // owner functions
75
+ error ErrorStakingReleaseNotActive(VersionPart release);
76
+ error ErrorStakingServiceNotFound(VersionPart release);
77
+
78
+ // initializeTokenHandler
79
+ error ErrorStakingNotRegistry(address registry);
80
+
81
+ // staking rate
82
+ error ErrorStakingTokenNotRegistered(ChainId chainId, address token);
83
+
84
+ // check dip balance and allowance
85
+ error ErrorStakingDipBalanceInsufficient(address owner, uint256 amount, uint256 dipBalance);
86
+ error ErrorStakingDipAllowanceInsufficient(address owner, address tokenHandler, uint256 amount, uint256 dipAllowance);
87
+
88
+ error ErrorStakingStakingReaderStakingMismatch(address stakingByStakingReader);
89
+ error ErrorStakingTargetAlreadyRegistered(NftId targetNftId);
90
+ error ErrorStakingTargetNftIdZero();
91
+ error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
92
+ error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
93
+ error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
94
+ error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
95
+ error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
96
+ error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
97
+ error ErrorStakingTargetNotFound(NftId targetNftId);
98
+ error ErrorStakingTargetTokenNotFound(NftId targetNftId, ChainId chainId, address token);
99
+ error ErrorStakingTargetMaxStakedAmountExceeded(NftId targetNftId, Amount maxStakedAmount, Amount stakedAmount);
100
+
101
+ error ErrorStakingStakeAmountZero(NftId targetNftId);
102
+
103
+ // info for individual stake
104
+ struct StakeInfo {
105
+ // slot 0
106
+ Amount stakedAmount; // 96
107
+ Amount rewardAmount; // 96
108
+ Timestamp lockedUntil; // 40
109
+ // slot 1
110
+ NftId targetNftId; // 96, redundant to parent nft in registry object info
111
+ Timestamp lastUpdateAt; // 40, needed to update rewards
112
+ Blocknumber lastUpdateIn; // 40, needed for traceability
113
+ }
114
+
115
+ struct TargetInfo {
116
+ // Slot 0
117
+ Amount stakedAmount; // 96
118
+ Amount rewardAmount; // 96
119
+ Blocknumber lastUpdateIn; // 40, needed for traceability
120
+ // Slot 1
121
+ Amount reserveAmount; // 96
122
+ Amount maxStakedAmount; // 96
123
+ Seconds lockingPeriod; // 40
124
+ ObjectType objectType; // 8
125
+ // Slot 2
126
+ UFixed rewardRate; // 160
127
+ ChainId chainId; // 96 redundant to target nft id
128
+ }
129
+
130
+ struct TvlInfo {
131
+ // Slot 0
132
+ Amount tvlAmount; // 96
133
+ Blocknumber lastUpdateIn; // 40, needed for traceability
134
+ }
135
+
136
+ struct TokenInfo {
137
+ // Slot 0
138
+ UFixed stakingRate; // 160
139
+ Blocknumber lastUpdateIn; // 40, needed for traceability
140
+ }
141
+
142
+ function initializeTokenHandler() external;
143
+
144
+ //--- only owner functions -------------------------------------------//
145
+
146
+ /// @dev Set the stake locking period for protocol stakes to the specified duration.
147
+ function setProtocolLockingPeriod(Seconds lockingPeriod) external;
148
+
149
+ /// @dev Set the protocol reward rate.
150
+ function setProtocolRewardRate(UFixed rewardRate) external;
151
+
152
+ /// @dev Set the staking rate for the specified chain and token.
153
+ /// The staking rate defines the amount of staked dips required to back up 1 token of total value locked.
154
+ function setStakingRate(ChainId chainId, address token, UFixed stakingRate) external;
155
+
156
+ /// @dev Sets/updates the staking service contract to the staking service of the specified release.
157
+ function setStakingService(VersionPart release) external;
158
+
159
+ /// @dev Sets/updates the staking reader contract.
160
+ function setStakingReader(StakingReader stakingReader) external;
161
+
162
+ /// @dev Registers a token for recording staking rate and total value locked.
163
+ function addToken(ChainId chainId, address token) external;
164
+
165
+ /// @dev Set the approval to the token handler.
166
+ /// Defines the max allowance from the staking wallet to the token handler.
167
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external;
168
+
169
+ //--- only target owner functions ------------------------------------//
170
+
171
+ /// @dev (Re)fills the staking reward reserves for the specified target
172
+ /// Unpermissioned: anybody may fill up staking reward reserves
173
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
174
+
175
+ /// @dev Defunds the staking reward reserves for the specified target
176
+ /// Permissioned: only the owner may call this function
177
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
178
+
179
+ //--- target management ----------------------------------------------//
180
+
181
+ /// @dev Register a new target for staking.
182
+ /// Permissioned: only the staking service may call this function
183
+ function registerTarget(
184
+ NftId targetNftId,
185
+ ObjectType expectedObjectType,
186
+ Seconds initialLockingPeriod,
187
+ UFixed initialRewardRate
188
+ ) external;
189
+
190
+
191
+ /// @dev Set the stake locking period to the specified duration.
192
+ /// Permissioned: only the staking service may call this function
193
+ function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod) external;
194
+
195
+ /// @dev Update the target specific reward rate.
196
+ /// Permissioned: only the staking service may call this function
197
+ function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
198
+
199
+ /// @dev Set the maximum staked amount for the specified target.
200
+ /// Permissioned: only the staking service may call this function
201
+ function setMaxStakedAmount(NftId targetNftId, Amount maxStakedAmount) external;
202
+
203
+ /// @dev (Re)fills the staking reward reserves for the specified target
204
+ /// Unpermissioned: anybody may fill up staking reward reserves
205
+ function refillRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferFrom) external returns (Amount newBalance);
206
+
207
+ /// @dev Defunds the staking reward reserves for the specified target
208
+ /// Permissioned: only the owner may call this function
209
+ function withdrawRewardReservesByService(NftId targetNftId, Amount dipAmount, address transferTo) external returns (Amount newBalance);
210
+
211
+ /// @dev Register a token for the specified target.
212
+ /// Used for instance targets. Each product may introduce its own token.
213
+ /// Permissioned: only the staking service may call this function
214
+ function addTargetToken(NftId targetNftId, address token) external;
215
+
216
+ /// @dev Increases the total value locked amount for the specified target by the provided token amount.
217
+ /// function is called when a new policy is collateralized.
218
+ /// function restricted to the pool service.
219
+ function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
220
+
221
+ /// @dev Decreases the total value locked amount for the specified target by the provided token amount.
222
+ /// function is called when a new policy is closed or payouts are executed.
223
+ /// function restricted to the pool service.
224
+ function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
225
+
226
+
227
+ function updateRemoteTvl(NftId targetNftId, address token, Amount amount) external;
228
+
229
+ // staking functions
230
+
231
+ /// @dev Creates a new stake to the specified target over the given DIP amount.
232
+ /// The stake owner is provided as an argument and becomes the stake NFT holder.
233
+ /// This function is permissionless and may be called by any user.
234
+ function createStake(NftId targetNftId, Amount dipAmount, address stakeOwner) external returns (NftId stakeNftId);
235
+
236
+ /// @dev Increase the staked DIP by dipAmount for the specified stake.
237
+ /// Staking rewards are updated and added to the staked DIP amount as well.
238
+ /// The function returns the new total amount of staked dips.
239
+ function stake(NftId stakeNftId, Amount dipAmount) external returns (Amount newStakeBalance);
240
+
241
+ /// @dev Pays the specified DIP amount to the holder of the stake NFT ID.
242
+ /// permissioned: only staking service may call this function.
243
+ function unstake(NftId stakeNftId) external returns (Amount unstakedAmount);
244
+
245
+ /// @dev restakes the dips to a new target.
246
+ /// the sum of the staked dips and the accumulated rewards will be restaked.
247
+ /// permissioned: only staking service may call this function.
248
+ function restake(NftId stakeNftId, NftId newTargetNftId) external returns (NftId newStakeNftId, Amount newStakeBalance);
249
+
250
+ /// @dev update stake rewards for current time.
251
+ /// may be called before an announement of a decrease of a reward rate reduction.
252
+ /// calling this functions ensures that reward balance is updated using the current (higher) reward rate.
253
+ /// unpermissioned.
254
+ function updateRewards(NftId stakeNftId) external returns (Amount newRewardAmount);
255
+
256
+ /// @dev transfers all rewards accumulated so far to the holder of the specified stake nft.
257
+ /// permissioned: only staking service may call this function.
258
+ function claimRewards(NftId stakeNftId) external returns (Amount rewardsClaimedAmount);
259
+
260
+ //--- view and pure functions -------------------------------------------//
261
+
262
+ function getStakingStore() external view returns (StakingStore stakingStore);
263
+ function getStakingReader() external view returns (StakingReader reader);
264
+ }