@etherisc/gif-next 0.0.2-9306579-093 → 0.0.2-9356555-232

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 (490) hide show
  1. package/README.md +27 -6
  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 +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +211 -66
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +142 -25
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +175 -216
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +113 -130
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +334 -159
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +115 -65
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -112
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +205 -66
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +158 -195
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +206 -27
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +351 -318
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +203 -28
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +259 -168
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -153
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -193
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +714 -283
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +211 -82
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +434 -128
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +627 -207
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +129 -157
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -45
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +469 -338
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -173
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +94 -106
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +108 -125
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -152
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +156 -326
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -135
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -145
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -163
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +330 -368
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +190 -48
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +80 -38
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +228 -186
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +272 -173
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +131 -9
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +117 -43
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +211 -164
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +86 -6
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +102 -64
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +200 -106
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +93 -51
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +224 -182
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +167 -67
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +92 -38
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +98 -17
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  187. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  188. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  189. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/Registry.sol/Registry.json +142 -53
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +331 -261
  193. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
  195. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -33
  197. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  198. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  199. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  201. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +414 -250
  203. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  205. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  207. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  208. package/artifacts/contracts/shared/Component.sol/Component.json +105 -104
  209. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -485
  211. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +99 -73
  213. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
  215. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  217. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  223. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -86
  225. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
  227. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +94 -106
  229. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  231. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  232. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  233. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  234. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  235. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  238. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  241. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  243. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +107 -124
  244. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  245. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  246. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  247. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  248. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  249. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  250. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +18 -2
  252. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  253. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  254. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
  256. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  257. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  258. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  259. package/artifacts/contracts/shared/Service.sol/Service.json +55 -2
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  262. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  264. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  265. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  266. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  267. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +110 -122
  268. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  269. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +77 -16
  270. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  271. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +33 -33
  272. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  273. package/artifacts/contracts/staking/Staking.sol/Staking.json +192 -192
  274. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  276. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +89 -51
  278. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
  280. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +120 -55
  282. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +73 -39
  284. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +171 -130
  286. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  287. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  288. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  289. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  291. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  294. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  296. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  298. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  300. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  302. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  304. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  306. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  308. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  310. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  312. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  314. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  316. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  318. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  321. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  323. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  325. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  328. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  330. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  332. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  334. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  336. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +44 -12
  337. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  338. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  339. package/contracts/accounting/AccountingService.sol +262 -0
  340. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  341. package/contracts/accounting/IAccountingService.sol +45 -0
  342. package/contracts/authorization/AccessAdmin.sol +237 -140
  343. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  344. package/contracts/authorization/Authorization.sol +321 -205
  345. package/contracts/authorization/IAccess.sol +1 -0
  346. package/contracts/authorization/IAccessAdmin.sol +17 -9
  347. package/contracts/authorization/IAuthorization.sol +27 -7
  348. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  349. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  350. package/contracts/distribution/BasicDistribution.sol +15 -12
  351. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  352. package/contracts/distribution/Distribution.sol +41 -47
  353. package/contracts/distribution/DistributionService.sol +127 -78
  354. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  355. package/contracts/distribution/IDistributionComponent.sol +1 -1
  356. package/contracts/distribution/IDistributionService.sol +22 -20
  357. package/contracts/examples/fire/FirePool.sol +25 -10
  358. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  359. package/contracts/examples/fire/FireProduct.sol +66 -41
  360. package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
  361. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -4
  362. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  363. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  364. package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
  365. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  366. package/contracts/examples/unpermissioned/SimpleProduct.sol +53 -27
  367. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  368. package/contracts/instance/BundleSet.sol +42 -38
  369. package/contracts/instance/IInstance.sol +17 -10
  370. package/contracts/instance/IInstanceService.sol +9 -29
  371. package/contracts/instance/Instance.sol +52 -34
  372. package/contracts/instance/InstanceAdmin.sol +249 -100
  373. package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
  374. package/contracts/instance/InstanceReader.sol +187 -32
  375. package/contracts/instance/InstanceService.sol +85 -146
  376. package/contracts/instance/InstanceServiceManager.sol +1 -1
  377. package/contracts/instance/InstanceStore.sol +13 -2
  378. package/contracts/instance/RiskSet.sol +118 -0
  379. package/contracts/instance/base/ObjectCounter.sol +1 -2
  380. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  381. package/contracts/instance/base/ObjectSet.sol +31 -33
  382. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  383. package/contracts/instance/module/IComponents.sol +10 -7
  384. package/contracts/instance/module/IDistribution.sol +5 -2
  385. package/contracts/instance/module/IPolicy.sol +2 -1
  386. package/contracts/instance/module/IRisk.sol +3 -0
  387. package/contracts/oracle/BasicOracle.sol +0 -1
  388. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  389. package/contracts/oracle/IOracleService.sol +2 -1
  390. package/contracts/oracle/Oracle.sol +5 -16
  391. package/contracts/oracle/OracleService.sol +107 -78
  392. package/contracts/oracle/OracleServiceManager.sol +1 -1
  393. package/contracts/pool/BasicPool.sol +33 -24
  394. package/contracts/pool/BasicPoolAuthorization.sol +27 -9
  395. package/contracts/pool/BundleService.sol +88 -154
  396. package/contracts/pool/BundleServiceManager.sol +1 -1
  397. package/contracts/pool/IBundleService.sol +15 -43
  398. package/contracts/pool/IPoolComponent.sol +1 -7
  399. package/contracts/pool/IPoolService.sol +58 -64
  400. package/contracts/pool/Pool.sol +112 -120
  401. package/contracts/pool/PoolLib.sol +216 -0
  402. package/contracts/pool/PoolService.sol +436 -242
  403. package/contracts/pool/PoolServiceManager.sol +1 -1
  404. package/contracts/product/ApplicationService.sol +39 -16
  405. package/contracts/product/ApplicationServiceManager.sol +1 -1
  406. package/contracts/product/BasicProduct.sol +10 -12
  407. package/contracts/product/BasicProductAuthorization.sol +24 -11
  408. package/contracts/product/ClaimService.sol +202 -151
  409. package/contracts/product/ClaimServiceManager.sol +1 -1
  410. package/contracts/product/IApplicationService.sol +8 -2
  411. package/contracts/product/IClaimService.sol +14 -2
  412. package/contracts/product/IPolicyService.sol +26 -11
  413. package/contracts/product/IPricingService.sol +10 -9
  414. package/contracts/product/IProductComponent.sol +10 -1
  415. package/contracts/product/IRiskService.sol +7 -7
  416. package/contracts/product/PolicyService.sol +248 -252
  417. package/contracts/product/PolicyServiceLib.sol +65 -0
  418. package/contracts/product/PolicyServiceManager.sol +1 -1
  419. package/contracts/product/PricingService.sol +35 -26
  420. package/contracts/product/PricingServiceManager.sol +3 -3
  421. package/contracts/product/Product.sol +100 -63
  422. package/contracts/product/RiskService.sol +89 -31
  423. package/contracts/product/RiskServiceManager.sol +1 -1
  424. package/contracts/registry/ChainNft.sol +10 -11
  425. package/contracts/registry/IRegistry.sol +14 -18
  426. package/contracts/registry/IRegistryService.sol +6 -4
  427. package/contracts/registry/IRelease.sol +26 -0
  428. package/contracts/registry/ITransferInterceptor.sol +1 -2
  429. package/contracts/registry/Registry.sol +29 -6
  430. package/contracts/registry/RegistryAdmin.sol +132 -242
  431. package/contracts/registry/RegistryService.sol +40 -58
  432. package/contracts/registry/RegistryServiceManager.sol +1 -1
  433. package/contracts/registry/ReleaseAdmin.sol +245 -0
  434. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  435. package/contracts/registry/ReleaseRegistry.sol +257 -237
  436. package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
  437. package/contracts/registry/TokenRegistry.sol +6 -8
  438. package/contracts/shared/Component.sol +69 -118
  439. package/contracts/shared/ComponentService.sol +422 -371
  440. package/contracts/shared/ComponentServiceManager.sol +1 -1
  441. package/contracts/shared/ComponentVerifyingService.sol +27 -15
  442. package/contracts/shared/ContractLib.sol +224 -9
  443. package/contracts/shared/IComponent.sol +8 -20
  444. package/contracts/shared/IComponentService.sol +41 -37
  445. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  446. package/contracts/shared/ILifecycle.sol +3 -1
  447. package/contracts/shared/INftOwnable.sol +2 -0
  448. package/contracts/shared/IRegisterable.sol +23 -1
  449. package/contracts/shared/IService.sol +3 -5
  450. package/contracts/shared/InstanceLinkedComponent.sol +68 -42
  451. package/contracts/shared/KeyValueStore.sol +1 -1
  452. package/contracts/shared/Lifecycle.sol +15 -4
  453. package/contracts/shared/NftOwnable.sol +26 -6
  454. package/contracts/shared/PolicyHolder.sol +1 -1
  455. package/contracts/shared/Registerable.sol +53 -19
  456. package/contracts/shared/RegistryLinked.sol +7 -13
  457. package/contracts/shared/Service.sol +9 -31
  458. package/contracts/shared/TokenHandler.sol +274 -72
  459. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  460. package/contracts/staking/IStaking.sol +5 -8
  461. package/contracts/staking/IStakingService.sol +8 -3
  462. package/contracts/staking/StakeManagerLib.sol +1 -1
  463. package/contracts/staking/Staking.sol +63 -35
  464. package/contracts/staking/StakingReader.sol +1 -1
  465. package/contracts/staking/StakingService.sol +45 -22
  466. package/contracts/staking/StakingServiceManager.sol +5 -4
  467. package/contracts/type/Key32.sol +2 -2
  468. package/contracts/type/Key32Set.sol +62 -0
  469. package/contracts/type/NftId.sol +6 -0
  470. package/contracts/type/ObjectType.sol +48 -21
  471. package/contracts/type/RiskId.sol +26 -8
  472. package/contracts/type/RoleId.sol +23 -15
  473. package/contracts/type/Selector.sol +5 -0
  474. package/contracts/type/StateId.sol +14 -1
  475. package/contracts/type/Timestamp.sol +0 -5
  476. package/contracts/type/UFixed.sol +9 -119
  477. package/contracts/type/Version.sol +15 -5
  478. package/contracts/upgradeability/ProxyManager.sol +2 -1
  479. package/package.json +5 -4
  480. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  481. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  482. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  483. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  484. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  485. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  486. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  487. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  488. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  489. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  490. package/contracts/instance/module/IAccess.sol +0 -46
@@ -5,91 +5,191 @@ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManage
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
7
7
 
8
- import {Amount} from "../type/Amount.sol";
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";
9
13
 
10
- /// @dev token specific transfer helper
11
- /// a default token contract is provided via contract constructor
12
- /// relies internally on oz SafeERC20.safeTransferFrom
13
- contract TokenHandler is AccessManaged {
14
- error ErrorTokenHandlerAmountIsZero();
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
15
44
  error ErrorTokenHandlerBalanceTooLow(address token, address from, uint256 balance, uint256 expectedBalance);
16
45
  error ErrorTokenHandlerAllowanceTooSmall(address token, address from, address spender, uint256 allowance, uint256 expectedAllowance);
17
- error ErrorTokenHandlerRecipientWalletsMustBeDistinct(address to, address to2, address to3);
18
-
19
- event LogTokenHandlerTokenTransfer(address token, address from, address to, uint256 amountTransferred);
46
+ error ErrorTokenHandlerAmountIsZero();
20
47
 
21
- IERC20Metadata private _token;
48
+ IRegistry public immutable REGISTRY;
49
+ IERC20Metadata public immutable TOKEN;
50
+ address public immutable COMPONENT;
51
+ NftId public immutable NFT_ID;
22
52
 
23
- constructor(address token, address initialAuthority) AccessManaged(initialAuthority) {
24
- _token = IERC20Metadata(token);
25
- }
53
+ address internal _wallet;
26
54
 
27
- /// @dev returns the default token defined for this TokenHandler
28
- function getToken()
29
- external
30
- view
31
- returns (IERC20Metadata)
32
- {
33
- return _token;
34
- }
35
-
36
- /// @dev collect tokens from outside of the gif and transfer them to one wallet within the scope of gif.
37
- /// This method also checks balance and allowance and makes sure the amount is greater than zero.
38
- function collectTokens(
39
- address from,
40
- address to,
41
- Amount amount
55
+ constructor(
56
+ address registry,
57
+ address component,
58
+ address token
42
59
  )
43
- external
44
- restricted()
45
60
  {
46
- _transfer(from, to, amount, true);
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());
47
81
  }
48
82
 
49
- /// @dev collect tokens from outside of the gif and transfer them to three distinct wallets within the scope of gif
50
- /// This method also checks balance and allowance and makes sure the amount is greater than zero.
51
- function collectTokensToThreeRecipients(
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(
52
87
  address from,
53
- address to,
54
88
  Amount amount,
55
- address to2,
56
- Amount amount2,
57
- address to3,
58
- Amount amount3
89
+ bool checkAmount
59
90
  )
60
91
  external
61
- restricted()
92
+ view
62
93
  {
63
- if (to == to2 || to == to3 || to2 == to3) {
64
- revert ErrorTokenHandlerRecipientWalletsMustBeDistinct(to, to2, to3);
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);
65
106
  }
66
107
 
67
- _checkPreconditions(from, amount + amount2 + amount3);
108
+ return _wallet;
109
+ }
110
+
68
111
 
69
- if (amount.gtz()) {
70
- _transfer(from, to, amount, false);
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);
71
125
  }
72
- if (amount2.gtz()) {
73
- _transfer(from, to2, amount2, false);
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;
74
133
  }
75
- if (amount3.gtz()) {
76
- _transfer(from, to3, amount3, false);
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
+ }
77
175
  }
78
176
  }
79
177
 
80
- /// @dev distribute tokens from a wallet within the scope of gif to an external address.
81
- /// This method also checks balance and allowance and makes sure the amount is greater than zero.
82
- function distributeTokens(
83
- address from,
84
- address to,
85
- Amount amount
86
- )
87
- external
88
- restricted()
178
+
179
+ function _pullToken(address from, Amount amount)
180
+ internal
89
181
  {
90
- _transfer(from, to, amount, true);
182
+ _transfer(from, getWallet(), amount, true);
91
183
  }
92
184
 
185
+
186
+ function _pushToken(address to, Amount amount)
187
+ internal
188
+ {
189
+ _transfer(getWallet(), to, amount, true);
190
+ }
191
+
192
+
93
193
  function _transfer(
94
194
  address from,
95
195
  address to,
@@ -99,41 +199,143 @@ contract TokenHandler is AccessManaged {
99
199
  internal
100
200
  {
101
201
  if (checkPreconditions) {
102
- // check amount > 0, balance >= amount and allowance >= amount
103
- _checkPreconditions(from, amount);
202
+ bool checkAmount = true;
203
+ _checkBalanceAndAllowance(from, amount, checkAmount);
104
204
  }
105
205
 
106
206
  // transfer the tokens
107
- emit LogTokenHandlerTokenTransfer(address(_token), from, to, amount.toInt());
207
+ emit LogTokenHandlerTokenTransfer(address(TOKEN), from, to, amount);
208
+
108
209
  SafeERC20.safeTransferFrom(
109
- _token,
210
+ TOKEN,
110
211
  from,
111
212
  to,
112
213
  amount.toInt());
113
214
  }
114
215
 
115
- function _checkPreconditions(
216
+
217
+ function _checkBalanceAndAllowance(
116
218
  address from,
117
- Amount amount
219
+ Amount amount,
220
+ bool checkAmount
118
221
  )
119
222
  internal
120
223
  view
121
224
  {
122
225
  // amount must be greater than zero
123
- if (amount.eqz()) {
226
+ if (checkAmount && amount.eqz()) {
124
227
  revert ErrorTokenHandlerAmountIsZero();
125
228
  }
126
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
+
127
236
  // balance must be >= amount
128
- uint256 balance = _token.balanceOf(from);
237
+ uint256 balance = TOKEN.balanceOf(from);
129
238
  if (balance < amount.toInt()) {
130
- revert ErrorTokenHandlerBalanceTooLow(address(_token), from, balance, amount.toInt());
239
+ revert ErrorTokenHandlerBalanceTooLow(address(TOKEN), from, balance, amount.toInt());
131
240
  }
241
+ }
242
+ }
132
243
 
133
- // allowance must be >= amount
134
- uint256 allowance = _token.allowance(from, address(this));
135
- if (allowance < amount.toInt()) {
136
- revert ErrorTokenHandlerAllowanceTooSmall(address(_token), from, address(this), allowance, amount.toInt());
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);
137
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);
138
340
  }
139
341
  }
@@ -5,8 +5,16 @@ import {TokenHandler} from "./TokenHandler.sol";
5
5
 
6
6
  library TokenHandlerDeployerLib {
7
7
 
8
- function deployTokenHandler(address token, address authority) public returns (TokenHandler) {
9
- return new TokenHandler(address(token), authority);
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);
10
18
  }
11
19
 
12
20
  }
@@ -30,6 +30,9 @@ interface IStaking is
30
30
  error ErrorStakingNotStakingOwner();
31
31
  error ErrorStakingNotNftOwner(NftId nftId);
32
32
 
33
+ // initializeTokenHandler
34
+ error ErrorStakingNotRegistry(address registry);
35
+
33
36
  // staking rate
34
37
  error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
35
38
 
@@ -64,6 +67,8 @@ interface IStaking is
64
67
  UFixed rewardRate;
65
68
  }
66
69
 
70
+ function initializeTokenHandler() external;
71
+
67
72
  // staking rate management
68
73
 
69
74
  /// @dev sets the rate that converts 1 token of total value locked into the
@@ -153,14 +158,6 @@ interface IStaking is
153
158
  Amount rewardsClaimedAmount
154
159
  );
155
160
 
156
- //--- helper functions --------------------------------------------------//
157
-
158
- /// @dev transfers the specified amount of dips from the from address to the staking wallet.
159
- function collectDipAmount(address from, Amount dipAmount) external;
160
-
161
- /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
162
- function transferDipAmount(address to, Amount dipAmount) external;
163
-
164
161
  //--- view and pure functions -------------------------------------------//
165
162
 
166
163
  function getStakingStore() external view returns (StakingStore stakingStore);
@@ -7,9 +7,7 @@ import {Amount} from "../type/Amount.sol";
7
7
  import {IService} from "../shared/IService.sol";
8
8
  import {IStaking} from "./IStaking.sol";
9
9
  import {NftId} from "../type/NftId.sol";
10
- import {ObjectType} from "../type/ObjectType.sol";
11
10
  import {Seconds} from "../type/Seconds.sol";
12
- import {Timestamp} from "../type/Timestamp.sol";
13
11
  import {TokenHandler} from "../shared/TokenHandler.sol";
14
12
  import {UFixed} from "../type/UFixed.sol";
15
13
 
@@ -33,7 +31,7 @@ interface IStakingService is IService
33
31
  event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
34
32
 
35
33
  // modifiers
36
- error ErrorStakingServiceNotNftOwner(NftId nftId, address expectedOwner, address owner);
34
+ error ErrorStakingServiceNotStakingOwner(address account);
37
35
  error ErrorStakingServiceNotStaking(address stakingAddress);
38
36
  error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
39
37
 
@@ -51,6 +49,13 @@ interface IStakingService is IService
51
49
  // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
52
50
  // TODO also make sure that protocol rewards can be refilled and withdrawn
53
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
+
54
59
  /// @dev creates/registers an on-chain instance staking target.
55
60
  /// function granted to instance service
56
61
  function createInstanceTarget(
@@ -51,7 +51,7 @@ library StakeManagerLib {
51
51
 
52
52
  // TODO check that additional dip, rewards and rewards increment
53
53
  // are still ok with max target staking amount
54
- NftId targetNftId = registry.getObjectInfo(stakeNftId).parentNftId;
54
+ NftId targetNftId = registry.getParentNftId(stakeNftId);
55
55
 
56
56
  stakingStore.restakeRewards(
57
57
  stakeNftId,
@@ -1,17 +1,22 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
4
6
  import {IRegistry} from "../registry/IRegistry.sol";
5
7
  import {IRegistryService} from "../registry/IRegistryService.sol";
8
+ import {IRelease} from "../registry/IRelease.sol";
6
9
  import {IStaking} from "./IStaking.sol";
7
10
  import {IVersionable} from "../upgradeability/IVersionable.sol";
8
11
 
9
12
  import {Amount, AmountLib} from "../type/Amount.sol";
10
13
  import {Component} from "../shared/Component.sol";
11
14
  import {IComponent} from "../shared/IComponent.sol";
15
+ import {IComponentService} from "../shared/IComponentService.sol";
12
16
  import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, STAKING} from "../type/ObjectType.sol";
17
+ import {ObjectType, COMPONENT, STAKING} from "../type/ObjectType.sol";
14
18
  import {Seconds} from "../type/Seconds.sol";
19
+ import {Registerable} from "../shared/Registerable.sol";
15
20
  import {StakeManagerLib} from "./StakeManagerLib.sol";
16
21
  import {StakingReader} from "./StakingReader.sol";
17
22
  import {StakingStore} from "./StakingStore.sol";
@@ -21,7 +26,7 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
21
26
  import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
22
27
  import {TokenRegistry} from "../registry/TokenRegistry.sol";
23
28
  import {UFixed} from "../type/UFixed.sol";
24
- import {Version, VersionLib} from "../type/Version.sol";
29
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
25
30
  import {Versionable} from "../upgradeability/Versionable.sol";
26
31
 
27
32
  contract Staking is
@@ -30,13 +35,11 @@ contract Staking is
30
35
  IStaking
31
36
  {
32
37
  string public constant CONTRACT_NAME = "Staking";
33
- uint8 private constant GIF_MAJOR_VERSION = 3;
34
38
 
35
39
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
36
40
  bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
37
41
 
38
42
  struct StakingStorage {
39
- IRegistryService _registryService;
40
43
  TokenRegistry _tokenRegistry;
41
44
  TokenHandler _tokenHandler;
42
45
  StakingStore _store;
@@ -60,6 +63,31 @@ contract Staking is
60
63
  _;
61
64
  }
62
65
 
66
+ function initializeTokenHandler()
67
+ external
68
+ {
69
+ if (msg.sender != address(getRegistry())) {
70
+ revert ErrorStakingNotRegistry(msg.sender);
71
+ }
72
+
73
+ StakingStorage storage $ = _getStakingStorage();
74
+ $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
75
+ address(getRegistry()),
76
+ address(this),
77
+ address(getToken()),
78
+ getRegistry().getAuthority());
79
+ }
80
+
81
+
82
+ function approveTokenHandler(IERC20Metadata token, Amount amount)
83
+ public
84
+ restricted()
85
+ onlyOwner()
86
+ {
87
+ _approveTokenHandler(token, amount);
88
+ }
89
+
90
+
63
91
  // set/update staking reader
64
92
  function setStakingReader(StakingReader stakingReader)
65
93
  external
@@ -372,25 +400,6 @@ contract Staking is
372
400
  }
373
401
 
374
402
 
375
-
376
- //--- other functions ---------------------------------------------------//
377
-
378
- function collectDipAmount(address from, Amount dipAmount)
379
- external
380
- restricted() // only staking service
381
- {
382
- getTokenHandler().collectTokens(from, getWallet(), dipAmount);
383
- }
384
-
385
-
386
- function transferDipAmount(address to, Amount dipAmount)
387
- external
388
- restricted() // only staking service
389
- {
390
- getTokenHandler().distributeTokens(getWallet(), to, dipAmount);
391
- }
392
-
393
-
394
403
  //--- view functions ----------------------------------------------------//
395
404
 
396
405
  function getStakingReader() public view returns (StakingReader reader) {
@@ -409,14 +418,24 @@ contract Staking is
409
418
  return _getStakingStorage()._tokenHandler;
410
419
  }
411
420
 
412
- // from Versionable
421
+ // from IRegisterable
422
+ function getRelease()
423
+ public
424
+ pure
425
+ virtual override (IRelease, Registerable)
426
+ returns(VersionPart)
427
+ {
428
+ return VersionPartLib.toVersionPart(3);
429
+ }
430
+
431
+ // from IVersionable
413
432
  function getVersion()
414
433
  public
415
434
  pure
416
- virtual override (IVersionable, Versionable)
435
+ virtual override (Component, IVersionable, Versionable)
417
436
  returns(Version)
418
437
  {
419
- return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
438
+ return VersionLib.toVersion(3,0,0);
420
439
  }
421
440
 
422
441
  //--- internal functions ------------------------------------------------//
@@ -445,6 +464,16 @@ contract Staking is
445
464
  }
446
465
 
447
466
 
467
+ function _approveTokenHandler(IERC20Metadata token, Amount amount)
468
+ internal
469
+ virtual override
470
+ {
471
+ IComponentService(_getServiceAddress(STAKING())).approveTokenHandler(
472
+ token,
473
+ amount);
474
+ }
475
+
476
+
448
477
  function _initialize(
449
478
  address owner,
450
479
  bytes memory data
@@ -466,10 +495,17 @@ contract Staking is
466
495
  TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
467
496
  address dipTokenAddress = tokenRegistry.getDipTokenAddress();
468
497
 
498
+ // wiring to external contracts
499
+ StakingStorage storage $ = _getStakingStorage();
500
+ $._protocolNftId = registry.getProtocolNftId();
501
+ $._store = StakingStore(stakingStoreAddress);
502
+ $._reader = StakingStore(stakingStoreAddress).getStakingReader();
503
+ $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
504
+
469
505
  _initializeComponent(
470
506
  authority,
471
507
  registryAddress,
472
- registry.getNftId(),
508
+ registry.getNftId(), // parent nft id
473
509
  CONTRACT_NAME,
474
510
  dipTokenAddress,
475
511
  STAKING(),
@@ -478,14 +514,6 @@ contract Staking is
478
514
  "", // registry data
479
515
  ""); // component data
480
516
 
481
- // wiring to external contracts
482
- StakingStorage storage $ = _getStakingStorage();
483
- $._protocolNftId = getRegistry().getProtocolNftId();
484
- $._store = StakingStore(stakingStoreAddress);
485
- $._reader = StakingStore(stakingStoreAddress).getStakingReader();
486
- $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
487
- $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(dipTokenAddress, authority);
488
-
489
517
  _registerInterface(type(IStaking).interfaceId);
490
518
  }
491
519