@etherisc/gif-next 0.0.2-a714036-117 → 0.0.2-a755cba-731

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 (486) hide show
  1. package/README.md +32 -8
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1000 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +767 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  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/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  22. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +156 -412
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +96 -344
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +229 -292
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +125 -117
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +84 -142
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +101 -62
  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 +1441 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1991 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -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 +1429 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1145 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2329 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +116 -48
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +53 -101
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +141 -141
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +197 -139
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -85
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +746 -134
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +118 -260
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +339 -140
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  97. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +109 -365
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +72 -130
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +85 -333
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +147 -191
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +119 -83
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +108 -356
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +160 -334
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +111 -131
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +60 -65
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -163
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +277 -205
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +105 -364
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +385 -418
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +120 -100
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +124 -181
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +89 -89
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +147 -349
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +433 -193
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +141 -105
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +68 -7
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +292 -6
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +281 -142
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +131 -143
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  162. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +351 -338
  165. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +126 -98
  167. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  168. package/artifacts/contracts/product/PricingService.sol/PricingService.json +215 -309
  169. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +117 -117
  171. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  172. package/artifacts/contracts/product/Product.sol/Product.json +145 -347
  173. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  174. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  175. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  176. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  177. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  179. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +310 -34
  181. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  183. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  184. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  185. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  186. package/artifacts/contracts/registry/Registry.sol/Registry.json +516 -95
  187. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +296 -143
  189. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
  191. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -75
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +131 -223
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +69 -288
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +471 -593
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +133 -127
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  210. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  211. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  215. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +61 -90
  217. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +425 -261
  219. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +72 -130
  221. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  223. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  225. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  227. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  229. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  231. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  234. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  235. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  236. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  237. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +84 -332
  238. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  239. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  240. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  241. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  242. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  243. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  244. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  246. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  247. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  248. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  250. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  251. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  252. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  254. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  255. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  258. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  259. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  260. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  261. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +106 -127
  262. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  263. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  264. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  265. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +64 -94
  266. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  267. package/artifacts/contracts/staking/Staking.sol/Staking.json +190 -379
  268. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  269. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  270. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  271. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +118 -99
  272. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  274. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -165
  276. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
  278. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +170 -129
  280. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  281. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +55 -24
  282. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  283. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Amount.sol/AmountLib.json +33 -9
  285. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  288. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  290. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  292. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  294. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  295. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  296. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  298. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  299. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  300. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  302. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  304. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  306. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  308. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +99 -5
  310. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  312. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  314. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  318. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  321. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
  323. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  325. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  326. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  327. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
  328. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  329. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  330. package/contracts/accounting/AccountingService.sol +263 -0
  331. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  332. package/contracts/accounting/IAccountingService.sol +45 -0
  333. package/contracts/authorization/AccessAdmin.sol +83 -59
  334. package/contracts/authorization/Authorization.sol +111 -40
  335. package/contracts/authorization/IAccess.sol +1 -0
  336. package/contracts/authorization/IAccessAdmin.sol +4 -3
  337. package/contracts/authorization/IAuthorization.sol +13 -7
  338. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  339. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  340. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  341. package/contracts/distribution/BasicDistribution.sol +8 -7
  342. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  343. package/contracts/distribution/Distribution.sol +33 -41
  344. package/contracts/distribution/DistributionService.sol +109 -89
  345. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  346. package/contracts/distribution/IDistributionComponent.sol +1 -1
  347. package/contracts/distribution/IDistributionService.sol +14 -11
  348. package/contracts/examples/fire/DamageLevel.sol +59 -0
  349. package/contracts/examples/fire/FirePool.sol +90 -0
  350. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  351. package/contracts/examples/fire/FireProduct.sol +436 -0
  352. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  353. package/contracts/examples/fire/FireUSD.sol +26 -0
  354. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  355. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  356. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  357. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  358. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  359. package/contracts/examples/unpermissioned/SimpleProduct.sol +366 -0
  360. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  361. package/contracts/instance/BundleSet.sol +38 -34
  362. package/contracts/instance/IInstance.sol +16 -31
  363. package/contracts/instance/IInstanceService.sol +7 -29
  364. package/contracts/instance/Instance.sol +44 -59
  365. package/contracts/instance/InstanceAdmin.sol +76 -54
  366. package/contracts/instance/InstanceAuthorizationV3.sol +53 -34
  367. package/contracts/instance/InstanceReader.sol +203 -27
  368. package/contracts/instance/InstanceService.sol +97 -148
  369. package/contracts/instance/InstanceServiceManager.sol +6 -7
  370. package/contracts/instance/InstanceStore.sol +11 -1
  371. package/contracts/instance/RiskSet.sol +119 -0
  372. package/contracts/instance/base/ObjectCounter.sol +1 -2
  373. package/contracts/instance/base/ObjectLifecycle.sol +10 -4
  374. package/contracts/instance/base/ObjectSet.sol +24 -25
  375. package/contracts/instance/module/IComponents.sol +11 -8
  376. package/contracts/instance/module/IPolicy.sol +26 -25
  377. package/contracts/instance/module/IRisk.sol +1 -0
  378. package/contracts/oracle/BasicOracle.sol +0 -1
  379. package/contracts/oracle/IOracleService.sol +2 -1
  380. package/contracts/oracle/Oracle.sol +6 -16
  381. package/contracts/oracle/OracleService.sol +112 -81
  382. package/contracts/oracle/OracleServiceManager.sol +6 -6
  383. package/contracts/pool/BasicPool.sol +35 -26
  384. package/contracts/pool/BasicPoolAuthorization.sol +14 -4
  385. package/contracts/pool/BundleService.sol +105 -118
  386. package/contracts/pool/BundleServiceManager.sol +6 -6
  387. package/contracts/pool/IBundleService.sol +8 -20
  388. package/contracts/pool/IPoolComponent.sol +19 -15
  389. package/contracts/pool/IPoolService.sol +52 -48
  390. package/contracts/pool/Pool.sol +145 -128
  391. package/contracts/pool/PoolService.sol +295 -208
  392. package/contracts/pool/PoolServiceManager.sol +4 -4
  393. package/contracts/product/ApplicationService.sol +71 -42
  394. package/contracts/product/ApplicationServiceManager.sol +4 -4
  395. package/contracts/product/BasicProduct.sol +9 -12
  396. package/contracts/product/BasicProductAuthorization.sol +1 -3
  397. package/contracts/product/ClaimService.sol +393 -127
  398. package/contracts/product/ClaimServiceManager.sol +4 -4
  399. package/contracts/product/IApplicationService.sol +6 -2
  400. package/contracts/product/IClaimService.sol +44 -7
  401. package/contracts/product/IPolicyService.sol +44 -38
  402. package/contracts/product/IPricingService.sol +10 -10
  403. package/contracts/product/IProductComponent.sol +23 -4
  404. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  405. package/contracts/product/PolicyService.sol +501 -294
  406. package/contracts/product/PolicyServiceManager.sol +4 -4
  407. package/contracts/product/PricingService.sol +54 -54
  408. package/contracts/product/PricingServiceManager.sol +3 -3
  409. package/contracts/product/Product.sol +133 -93
  410. package/contracts/product/{ProductService.sol → RiskService.sol} +21 -13
  411. package/contracts/product/RiskServiceManager.sol +39 -0
  412. package/contracts/registry/ChainNft.sol +72 -40
  413. package/contracts/registry/IRegistry.sol +57 -18
  414. package/contracts/registry/IRegistryService.sol +5 -12
  415. package/contracts/registry/ITransferInterceptor.sol +1 -2
  416. package/contracts/registry/Registry.sol +350 -201
  417. package/contracts/registry/RegistryAdmin.sol +147 -55
  418. package/contracts/registry/RegistryService.sol +35 -46
  419. package/contracts/registry/RegistryServiceManager.sol +2 -2
  420. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  421. package/contracts/registry/ReleaseRegistry.sol +207 -206
  422. package/contracts/registry/ServiceAuthorizationV3.sol +59 -52
  423. package/contracts/shared/Component.sol +60 -121
  424. package/contracts/shared/ComponentService.sol +390 -345
  425. package/contracts/shared/ComponentServiceManager.sol +8 -5
  426. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  427. package/contracts/shared/ContractLib.sol +224 -0
  428. package/contracts/shared/IComponent.sol +6 -14
  429. package/contracts/shared/IComponentService.sol +45 -37
  430. package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
  431. package/contracts/shared/ILifecycle.sol +3 -1
  432. package/contracts/shared/INftOwnable.sol +2 -0
  433. package/contracts/shared/IPolicyHolder.sol +12 -22
  434. package/contracts/shared/IRegisterable.sol +11 -0
  435. package/contracts/shared/InitializableERC165.sol +2 -2
  436. package/contracts/shared/InstanceLinkedComponent.sol +72 -47
  437. package/contracts/shared/KeyValueStore.sol +1 -1
  438. package/contracts/shared/Lifecycle.sol +15 -4
  439. package/contracts/shared/NftOwnable.sol +27 -7
  440. package/contracts/shared/PolicyHolder.sol +15 -52
  441. package/contracts/shared/Registerable.sol +19 -11
  442. package/contracts/shared/RegistryLinked.sol +9 -14
  443. package/contracts/shared/Service.sol +20 -18
  444. package/contracts/shared/TokenHandler.sol +358 -27
  445. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  446. package/contracts/staking/IStaking.sol +11 -5
  447. package/contracts/staking/IStakingService.sol +0 -3
  448. package/contracts/staking/StakeManagerLib.sol +18 -25
  449. package/contracts/staking/Staking.sol +49 -50
  450. package/contracts/staking/StakingManager.sol +8 -6
  451. package/contracts/staking/StakingReader.sol +12 -5
  452. package/contracts/staking/StakingService.sol +65 -36
  453. package/contracts/staking/StakingServiceManager.sol +2 -2
  454. package/contracts/staking/TargetManagerLib.sol +7 -3
  455. package/contracts/type/Amount.sol +15 -0
  456. package/contracts/type/ClaimId.sol +6 -1
  457. package/contracts/type/Key32.sol +2 -2
  458. package/contracts/type/Key32Set.sol +62 -0
  459. package/contracts/type/NftId.sol +7 -0
  460. package/contracts/type/ObjectType.sol +26 -11
  461. package/contracts/type/PayoutId.sol +10 -10
  462. package/contracts/type/RiskId.sol +30 -4
  463. package/contracts/type/RoleId.sol +0 -12
  464. package/contracts/type/Seconds.sol +8 -0
  465. package/contracts/type/StateId.sol +15 -1
  466. package/contracts/type/UFixed.sol +13 -119
  467. package/contracts/upgradeability/ProxyManager.sol +68 -34
  468. package/contracts/upgradeability/Versionable.sol +2 -2
  469. package/package.json +4 -3
  470. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  471. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  472. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  473. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  474. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  475. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  476. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  477. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  478. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  479. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  480. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  481. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  482. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  483. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  484. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  485. package/contracts/product/ProductServiceManager.sol +0 -39
  486. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,58 +1,389 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
4
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
6
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
6
7
 
7
- 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";
8
13
 
9
- /// @dev token specific transfer helper
10
- /// a default token contract is provided via contract constructor
11
- /// relies internally on oz SafeERC20.safeTransferFrom
12
- contract TokenHandler {
13
- IERC20Metadata private _token;
14
14
 
15
- constructor(address token) {
16
- _token = IERC20Metadata(token);
15
+ contract TokenHandlerBase {
16
+
17
+ // _setWallet
18
+ event LogTokenHandlerWalletAddressChanged(NftId componentNftId, address oldWallet, address newWallet);
19
+ event LogTokenHandlerWalletTokensTransferred(NftId componentNftId, address oldWallet, address newWallet, Amount amount);
20
+
21
+ // _approveTokenHandler
22
+ event LogTokenHandlerTokenApproved(NftId nftId, address tokenHandler, address token, Amount amount, bool isMaxAmount);
23
+
24
+ // _transfer
25
+ event LogTokenHandlerTokenTransfer(address token, address from, address to, Amount amount);
26
+
27
+ // constructor
28
+ error ErrorTokenHandlerNotRegistry(address registry);
29
+ error ErrorTokenHandlerComponentNotRegistered(address component);
30
+ error ErrorTokenHandlerTokenAddressZero();
31
+
32
+ // _setWallet
33
+ error ErrorTokenHandlerNewWalletAddressZero();
34
+ error ErrorTokenHandlerAddressIsSameAsCurrent();
35
+
36
+ // _approveTokenHandler
37
+ error ErrorTokenHandlerNotWallet(NftId nftId, address tokenHandler, address wallet);
38
+
39
+ // _pullAndPullToken
40
+ error ErrorTokenHandlerWalletsNotDistinct(address from, address to1, address to2);
41
+ error ErrorTokenHandlerPushAmountsTooLarge(Amount pushAmount, Amount pullAmount);
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
+
80
+
81
+ /// @dev Returns the wallet linked to this TokenHandler.
82
+ function getWallet()
83
+ public
84
+ view
85
+ returns (address wallet)
86
+ {
87
+ if (_wallet == address(0)) {
88
+ return address(this);
89
+ }
90
+
91
+ return _wallet;
92
+ }
93
+
94
+
95
+ /// @dev Approves token handler to spend up to the specified amount of tokens.
96
+ /// Sets spending limit to type(uint256).max for AmountLib.max().
97
+ /// Reverts if wallet is not token handler itself.
98
+ /// Sets approvel using SareERC20.forceApprove internally.
99
+ function _approve(
100
+ IERC20Metadata token,
101
+ Amount amount
102
+ )
103
+ internal
104
+ {
105
+ // check that wallet is token handler contract itself
106
+ if(_wallet != address(0)) {
107
+ revert ErrorTokenHandlerNotWallet(NFT_ID, address(this), _wallet);
108
+ }
109
+
110
+ // update spending limit for AmountLib.max() to type(uint256).max
111
+ uint256 amountInt = amount.toInt();
112
+ bool isMaxAmount = false;
113
+ if (amount == AmountLib.max()) {
114
+ amountInt = type(uint256).max;
115
+ isMaxAmount = true;
116
+ }
117
+
118
+ emit LogTokenHandlerTokenApproved(NFT_ID, address(this), address(token), amount, isMaxAmount);
119
+
120
+ // execute approval
121
+ SafeERC20.forceApprove(
122
+ token,
123
+ address(this),
124
+ amountInt);
125
+ }
126
+
127
+
128
+ function _setWallet(address newWallet)
129
+ internal
130
+ {
131
+ address oldWallet = _wallet;
132
+ if (newWallet == oldWallet) {
133
+ revert ErrorTokenHandlerAddressIsSameAsCurrent();
134
+ }
135
+
136
+ // effects
137
+ address oldWalletForBalance = getWallet();
138
+ _wallet = newWallet;
139
+
140
+ emit LogTokenHandlerWalletAddressChanged(NFT_ID, oldWallet, newWallet);
141
+
142
+ // interactions
143
+ Amount balanceAmount = AmountLib.toAmount(
144
+ TOKEN.balanceOf(oldWalletForBalance));
145
+
146
+ if (balanceAmount.gtz()) {
147
+ // move tokens from old to new wallet
148
+ emit LogTokenHandlerWalletTokensTransferred(NFT_ID, oldWallet, newWallet, balanceAmount);
149
+
150
+ if (oldWallet == address(0)) {
151
+ // transfer from the component requires an allowance
152
+ _transfer(address(this), newWallet, balanceAmount, true);
153
+ } else if (newWallet == address(0)) {
154
+ _transfer(oldWallet, address(this), balanceAmount, true);
155
+ } else {
156
+ _transfer(oldWallet, newWallet, balanceAmount, true);
157
+ }
158
+ }
17
159
  }
18
160
 
19
- /// @dev transfer amount default tokens
20
- function transfer(
161
+
162
+ function _pullAndPushToken(
163
+ address from,
164
+ Amount pullAmount,
165
+ address to1,
166
+ Amount amount1,
167
+ address to2,
168
+ Amount amount2
169
+ )
170
+ internal
171
+ {
172
+ address wallet = getWallet();
173
+
174
+ if (wallet == to1 || wallet == to2 || to1 == to2) {
175
+ revert ErrorTokenHandlerWalletsNotDistinct(wallet, to1, to2);
176
+ }
177
+
178
+ if (amount1 + amount2 > pullAmount) {
179
+ revert ErrorTokenHandlerPushAmountsTooLarge(amount1 + amount2, pullAmount);
180
+ }
181
+
182
+ _pullToken(from, pullAmount);
183
+
184
+ if (amount1.gtz()) { _pushToken(to1, amount1); }
185
+ if (amount2.gtz()) { _pushToken(to2, amount2); }
186
+ }
187
+
188
+
189
+ function _pullToken(address from, Amount amount)
190
+ internal
191
+ {
192
+ _transfer(from, getWallet(), amount, true);
193
+ }
194
+
195
+
196
+ function _pushToken(address to, Amount amount)
197
+ internal
198
+ {
199
+ _transfer(getWallet(), to, amount, true);
200
+ }
201
+
202
+
203
+ function _transfer(
21
204
  address from,
22
205
  address to,
23
- Amount amount
206
+ Amount amount,
207
+ bool checkPreconditions
24
208
  )
25
- external
209
+ internal
26
210
  {
211
+ if (checkPreconditions) {
212
+ // check amount > 0, balance >= amount and allowance >= amount
213
+ _checkPreconditions(from, amount);
214
+ }
215
+
216
+ // transfer the tokens
217
+ emit LogTokenHandlerTokenTransfer(address(TOKEN), from, to, amount);
218
+
27
219
  SafeERC20.safeTransferFrom(
28
- _token,
220
+ TOKEN,
29
221
  from,
30
222
  to,
31
223
  amount.toInt());
32
224
  }
33
225
 
34
- /// @dev transfer amount of the specified token
35
- function safeTransferFrom(
36
- address token,
226
+
227
+ function _checkPreconditions(
37
228
  address from,
38
- address to,
39
229
  Amount amount
230
+ )
231
+ internal
232
+ view
233
+ {
234
+ // amount must be greater than zero
235
+ if (amount.eqz()) {
236
+ revert ErrorTokenHandlerAmountIsZero();
237
+ }
238
+
239
+ // allowance must be >= amount
240
+ uint256 allowance = TOKEN.allowance(from, address(this));
241
+ if (allowance < amount.toInt()) {
242
+ revert ErrorTokenHandlerAllowanceTooSmall(address(TOKEN), from, address(this), allowance, amount.toInt());
243
+ }
244
+
245
+ // balance must be >= amount
246
+ uint256 balance = TOKEN.balanceOf(from);
247
+ if (balance < amount.toInt()) {
248
+ revert ErrorTokenHandlerBalanceTooLow(address(TOKEN), from, balance, amount.toInt());
249
+ }
250
+ }
251
+ }
252
+
253
+
254
+ /// @dev Token specific transfer helper
255
+ /// a default token contract is provided via contract constructor
256
+ /// relies internally on oz SafeERC20.safeTransferFrom
257
+ contract TokenHandler is
258
+ AccessManaged,
259
+ TokenHandlerBase
260
+ {
261
+
262
+ // onlyService
263
+ error ErrorTokenHandlerNotService(address service);
264
+
265
+ // TODO delete
266
+ error ErrorTokenHandlerRecipientWalletsMustBeDistinct(address to, address to2, address to3);
267
+
268
+ modifier onlyService() {
269
+ if (!REGISTRY.isObjectType(msg.sender, SERVICE())) {
270
+ revert ErrorTokenHandlerNotService(msg.sender);
271
+ }
272
+ _;
273
+ }
274
+
275
+ constructor(
276
+ address registry,
277
+ address component,
278
+ address token,
279
+ address authority
40
280
  )
281
+ TokenHandlerBase(registry, component, token)
282
+ AccessManaged(authority)
283
+ { }
284
+
285
+ /// @dev sets the wallet address for the component.
286
+ /// if the current wallet has tokens, these will be transferred.
287
+ /// if the new wallet address is externally owned, an approval from the
288
+ /// owner of the external wallet to the tokenhandler of the component that
289
+ /// covers the current component balance must exist
290
+ function setWallet(address newWallet)
41
291
  external
292
+ // restricted() // TODO re-activate
293
+ onlyService()
42
294
  {
43
- SafeERC20.safeTransferFrom(
44
- IERC20Metadata(token),
45
- from,
46
- to,
47
- amount.toInt());
295
+ _setWallet(newWallet);
48
296
  }
49
297
 
50
- /// @dev returns the default token defined for this TokenHandler
51
- function getToken()
298
+
299
+ /// @dev Approves token handler to spend up to the specified amount of tokens.
300
+ /// Sets spending limit to type(uint256).max for AmountLib.max().
301
+ /// Reverts if component wallet is not component itself.
302
+ /// Sets approvel using SareERC20.forceApprove internally.
303
+ function approve(
304
+ IERC20Metadata token,
305
+ Amount amount
306
+ )
52
307
  external
53
- view
54
- returns (IERC20Metadata)
308
+ // restricted() // TODO re-activate
309
+ onlyService()
310
+ {
311
+ _approve(token, amount);
312
+ }
313
+
314
+ /// @dev Collect tokens from outside of GIF and transfer them to the wallet.
315
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
316
+ function collectTokens(
317
+ address from,
318
+ Amount amount
319
+ )
320
+ external
321
+ // restricted() // TODO re-activate
322
+ onlyService()
323
+ {
324
+ _pullToken(from, amount);
325
+ }
326
+
327
+
328
+ /// @dev Collect tokens from outside of GIF and transfer them to the wallet.
329
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
330
+ function pushToken(
331
+ address from,
332
+ Amount amount
333
+ )
334
+ external
335
+ // restricted() // TODO re-activate
336
+ onlyService()
337
+ {
338
+ _pushToken(from, amount);
339
+ }
340
+
341
+
342
+ /// @dev collect tokens from outside of the gif and transfer them to three distinct wallets within the scope of gif
343
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
344
+ function collectTokensToThreeRecipients(
345
+ address from,
346
+ address to,
347
+ Amount amount,
348
+ address to2,
349
+ Amount amount2,
350
+ address to3,
351
+ Amount amount3
352
+ )
353
+ external
354
+ restricted()
355
+ onlyService()
356
+ {
357
+ if (to == to2 || to == to3 || to2 == to3) {
358
+ revert ErrorTokenHandlerRecipientWalletsMustBeDistinct(to, to2, to3);
359
+ }
360
+
361
+ _checkPreconditions(from, amount + amount2 + amount3);
362
+
363
+ if (amount.gtz()) {
364
+ _transfer(from, to, amount, false);
365
+ }
366
+ if (amount2.gtz()) {
367
+ _transfer(from, to2, amount2, false);
368
+ }
369
+ if (amount3.gtz()) {
370
+ _transfer(from, to3, amount3, false);
371
+ }
372
+ }
373
+
374
+
375
+ /// @dev distribute tokens from a wallet within the scope of gif to an external address.
376
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
377
+ function distributeTokens(
378
+ address from,
379
+ address to,
380
+ Amount amount
381
+ )
382
+ external
383
+ restricted()
384
+ onlyService()
55
385
  {
56
- return _token;
386
+ // _transfer(from, to, amount, true);
387
+ _pushToken(to, amount);
57
388
  }
58
389
  }
@@ -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
+ }
@@ -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
 
@@ -42,8 +45,9 @@ interface IStaking is
42
45
  error ErrorStakingTargetNftIdZero();
43
46
  error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
44
47
  error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
45
- error ErrorStakingLockingPeriodZero(NftId targetNftId);
48
+ error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
46
49
  error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
50
+ error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
47
51
  error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
48
52
  error ErrorStakingTargetNotFound(NftId targetNftId);
49
53
  error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
@@ -63,6 +67,8 @@ interface IStaking is
63
67
  UFixed rewardRate;
64
68
  }
65
69
 
70
+ function initializeTokenHandler() external;
71
+
66
72
  // staking rate management
67
73
 
68
74
  /// @dev sets the rate that converts 1 token of total value locked into the
@@ -154,11 +160,11 @@ interface IStaking is
154
160
 
155
161
  //--- helper functions --------------------------------------------------//
156
162
 
157
- /// @dev transfers the specified amount of dips from the from address to the staking wallet.
158
- function collectDipAmount(address from, Amount dipAmount) external;
163
+ // /// @dev transfers the specified amount of dips from the from address to the staking wallet.
164
+ // function collectDipAmount(address from, Amount dipAmount) external;
159
165
 
160
- /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
161
- function transferDipAmount(address to, Amount dipAmount) external;
166
+ // /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
167
+ // function transferDipAmount(address to, Amount dipAmount) external;
162
168
 
163
169
  //--- view and pure functions -------------------------------------------//
164
170
 
@@ -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,6 @@ 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);
37
34
  error ErrorStakingServiceNotStaking(address stakingAddress);
38
35
  error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
39
36
 
@@ -114,6 +114,24 @@ library StakeManagerLib {
114
114
  lockingPeriod = info.lockingPeriod;
115
115
  }
116
116
 
117
+ function checkUnstakeParameters(
118
+ StakingReader stakingReader,
119
+ NftId stakeNftId
120
+ )
121
+ public
122
+ view
123
+ returns (
124
+ UFixed rewardRate,
125
+ Seconds lockingPeriod
126
+ )
127
+ {
128
+ IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
129
+
130
+ if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
131
+ revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
132
+ }
133
+ }
134
+
117
135
 
118
136
  function checkTarget(
119
137
  StakingReader stakingReader,
@@ -153,31 +171,6 @@ library StakeManagerLib {
153
171
  // TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
154
172
  }
155
173
 
156
-
157
- function checkDipBalanceAndAllowance(
158
- IERC20Metadata dip,
159
- address owner,
160
- address tokenHandlerAddress,
161
- Amount dipAmount
162
- )
163
- public
164
- view
165
- {
166
- // check balance
167
- uint256 amount = dipAmount.toInt();
168
- uint256 dipBalance = dip.balanceOf(owner);
169
- if (dipBalance < amount) {
170
- revert IStaking.ErrorStakingDipBalanceInsufficient(owner, amount, dipBalance);
171
- }
172
-
173
- // check allowance
174
- uint256 dipAllowance = dip.allowance(owner, tokenHandlerAddress);
175
- if (dipAllowance < amount) {
176
- revert IStaking.ErrorStakingDipAllowanceInsufficient(owner, tokenHandlerAddress, amount, dipAllowance);
177
- }
178
- }
179
-
180
-
181
174
  function calculateRewardIncrease(
182
175
  StakingReader stakingReader,
183
176
  NftId stakeNftId,