@etherisc/gif-next 0.0.2-bdcb44f-543 → 0.0.2-be78639-672

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 (736) hide show
  1. package/README.md +178 -409
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1735 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +817 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1400 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +465 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +407 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +652 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +844 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +939 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +950 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +294 -285
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +844 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +844 -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 +844 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  66. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{base/IKeyValueStore.sol/IKeyValueStore.json → BaseStore.sol/BaseStore.json} +87 -184
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +595 -1842
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +678 -85
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +684 -2663
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2400 -0
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +872 -0
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1881 -710
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +621 -319
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +217 -118
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  103. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  105. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  106. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  108. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  109. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  110. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  111. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  112. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  113. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +849 -0
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  121. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/IOracleComponent.sol/IOracleComponent.json} +230 -242
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +830 -0
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  131. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +317 -536
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +844 -0
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +886 -0
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  144. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  145. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +402 -416
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +886 -0
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +810 -0
  156. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  157. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → product/BasicProduct.sol/BasicProduct.json} +435 -565
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  159. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +844 -0
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +906 -0
  164. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +804 -0
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  170. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +243 -147
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  173. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1006 -0
  174. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IRiskService.sol/IRiskService.json} +289 -143
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +874 -0
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +834 -0
  186. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  187. package/artifacts/contracts/{components → product}/Product.sol/Product.json +467 -459
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  191. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +794 -0
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  193. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  195. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +515 -31
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +306 -124
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  199. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  200. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  202. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/Registry.sol/Registry.json +999 -124
  204. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2255 -0
  206. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  208. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  209. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +381 -260
  210. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  211. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +233 -110
  212. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  214. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  216. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1401 -0
  218. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  219. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +705 -0
  220. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  221. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +360 -137
  222. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  223. package/artifacts/contracts/shared/Component.sol/Component.json +695 -0
  224. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  226. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +882 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  234. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  235. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  236. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/IComponent.sol/IComponent.json} +271 -203
  238. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  240. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  241. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +261 -236
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +38 -10
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +163 -3
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  252. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  253. package/artifacts/contracts/shared/IService.sol/IService.json +177 -18
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  258. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  259. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  260. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  261. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  262. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +47 -70
  264. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  265. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  266. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +145 -100
  268. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  269. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  270. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  271. package/artifacts/contracts/shared/Service.sol/Service.json +163 -106
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  276. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  278. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  280. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  281. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  282. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  283. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  284. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  285. package/artifacts/contracts/staking/Staking.sol/Staking.json +3175 -0
  286. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  288. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +867 -0
  290. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  292. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  294. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +786 -0
  296. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  298. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  300. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  301. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  302. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  303. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  304. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  306. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +270 -0
  308. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  310. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  312. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  314. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  316. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  318. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  319. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  320. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  322. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  323. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  324. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  326. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  328. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  330. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  332. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  334. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  336. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  342. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  344. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  346. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  348. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  350. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  352. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  354. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  355. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  356. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +672 -0
  358. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  360. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  361. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  362. package/contracts/accounting/AccountingService.sol +274 -0
  363. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  364. package/contracts/accounting/IAccountingService.sol +47 -0
  365. package/contracts/authorization/AccessAdmin.sol +679 -0
  366. package/contracts/authorization/AccessAdminLib.sol +678 -0
  367. package/contracts/authorization/AccessManagerCloneable.sol +140 -0
  368. package/contracts/authorization/Authorization.sol +190 -0
  369. package/contracts/authorization/IAccess.sol +66 -0
  370. package/contracts/authorization/IAccessAdmin.sol +142 -0
  371. package/contracts/authorization/IAuthorization.sol +26 -0
  372. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  373. package/contracts/authorization/ServiceAuthorization.sol +300 -0
  374. package/contracts/distribution/BasicDistribution.sol +140 -0
  375. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  376. package/contracts/distribution/Distribution.sol +245 -0
  377. package/contracts/distribution/DistributionService.sol +448 -0
  378. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  379. package/contracts/distribution/IDistributionComponent.sol +45 -0
  380. package/contracts/distribution/IDistributionService.sol +115 -0
  381. package/contracts/examples/fire/DamageLevel.sol +59 -0
  382. package/contracts/examples/fire/FirePool.sol +86 -0
  383. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  384. package/contracts/examples/fire/FireProduct.sol +433 -0
  385. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  386. package/contracts/examples/fire/FireUSD.sol +26 -0
  387. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  388. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  389. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  390. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  391. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  392. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  393. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  394. package/contracts/instance/BaseStore.sol +93 -0
  395. package/contracts/instance/BundleSet.sol +130 -0
  396. package/contracts/instance/IBaseStore.sol +37 -0
  397. package/contracts/instance/IInstance.sol +130 -66
  398. package/contracts/instance/IInstanceService.sol +86 -26
  399. package/contracts/instance/Instance.sol +266 -206
  400. package/contracts/instance/InstanceAdmin.sol +307 -0
  401. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  402. package/contracts/instance/InstanceReader.sol +506 -193
  403. package/contracts/instance/InstanceService.sol +412 -388
  404. package/contracts/instance/InstanceServiceManager.sol +14 -29
  405. package/contracts/instance/InstanceStore.sol +323 -0
  406. package/contracts/instance/ProductStore.sol +290 -0
  407. package/contracts/instance/RiskSet.sol +126 -0
  408. package/contracts/instance/TargetNames.sol +10 -0
  409. package/contracts/instance/base/BalanceStore.sol +121 -0
  410. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  411. package/contracts/instance/base/ObjectCounter.sol +20 -0
  412. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  413. package/contracts/instance/base/ObjectSet.sol +77 -0
  414. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  415. package/contracts/instance/module/IBundle.sol +10 -10
  416. package/contracts/instance/module/IComponents.sol +60 -0
  417. package/contracts/instance/module/IDistribution.sol +25 -12
  418. package/contracts/instance/module/IPolicy.sol +71 -38
  419. package/contracts/instance/module/IRisk.sol +6 -1
  420. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  421. package/contracts/oracle/BasicOracle.sol +44 -0
  422. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  423. package/contracts/oracle/IOracle.sol +41 -0
  424. package/contracts/oracle/IOracleComponent.sol +33 -0
  425. package/contracts/oracle/IOracleService.sol +66 -0
  426. package/contracts/oracle/Oracle.sol +152 -0
  427. package/contracts/oracle/OracleService.sol +310 -0
  428. package/contracts/oracle/OracleServiceManager.sol +39 -0
  429. package/contracts/pool/BasicPool.sol +161 -0
  430. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  431. package/contracts/pool/BundleService.sol +386 -0
  432. package/contracts/pool/BundleServiceManager.sol +39 -0
  433. package/contracts/pool/IBundleService.sol +116 -0
  434. package/contracts/pool/IPoolComponent.sol +62 -0
  435. package/contracts/pool/IPoolService.sol +170 -0
  436. package/contracts/pool/Pool.sol +331 -0
  437. package/contracts/pool/PoolLib.sol +341 -0
  438. package/contracts/pool/PoolService.sol +614 -0
  439. package/contracts/pool/PoolServiceManager.sol +39 -0
  440. package/contracts/product/ApplicationService.sol +327 -0
  441. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  442. package/contracts/product/BasicProduct.sol +48 -0
  443. package/contracts/product/BasicProductAuthorization.sol +63 -0
  444. package/contracts/product/ClaimService.sol +626 -0
  445. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  446. package/contracts/{instance/service → product}/IApplicationService.sol +41 -35
  447. package/contracts/product/IClaimService.sol +136 -0
  448. package/contracts/product/IPolicyService.sol +102 -0
  449. package/contracts/product/IPricingService.sol +40 -0
  450. package/contracts/product/IProductComponent.sol +62 -0
  451. package/contracts/product/IRiskService.sol +48 -0
  452. package/contracts/product/PolicyService.sol +645 -0
  453. package/contracts/product/PolicyServiceLib.sol +139 -0
  454. package/contracts/product/PolicyServiceManager.sol +39 -0
  455. package/contracts/product/PricingService.sol +306 -0
  456. package/contracts/product/PricingServiceManager.sol +39 -0
  457. package/contracts/product/Product.sol +491 -0
  458. package/contracts/product/RiskService.sol +189 -0
  459. package/contracts/product/RiskServiceManager.sol +39 -0
  460. package/contracts/registry/ChainNft.sol +83 -36
  461. package/contracts/registry/IRegistry.sol +106 -33
  462. package/contracts/registry/IRegistryService.sol +36 -41
  463. package/contracts/registry/IRelease.sol +29 -0
  464. package/contracts/registry/ITransferInterceptor.sol +1 -1
  465. package/contracts/registry/Registry.sol +481 -209
  466. package/contracts/registry/RegistryAdmin.sol +173 -0
  467. package/contracts/registry/RegistryAuthorization.sol +337 -0
  468. package/contracts/registry/RegistryService.sol +90 -132
  469. package/contracts/registry/RegistryServiceManager.sol +23 -32
  470. package/contracts/registry/ReleaseAdmin.sol +199 -0
  471. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  472. package/contracts/registry/ReleaseRegistry.sol +525 -0
  473. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  474. package/contracts/registry/TokenRegistry.sol +265 -64
  475. package/contracts/shared/Component.sol +210 -0
  476. package/contracts/shared/ComponentService.sol +691 -0
  477. package/contracts/shared/ComponentServiceManager.sol +38 -0
  478. package/contracts/shared/ContractLib.sol +312 -0
  479. package/contracts/shared/IComponent.sol +58 -0
  480. package/contracts/shared/IComponentService.sol +111 -0
  481. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  482. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  483. package/contracts/shared/INftOwnable.sol +6 -2
  484. package/contracts/shared/IPolicyHolder.sol +23 -14
  485. package/contracts/shared/IRegisterable.sol +22 -1
  486. package/contracts/shared/IRegistryLinked.sol +0 -1
  487. package/contracts/shared/IService.sol +12 -7
  488. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  489. package/contracts/shared/InstanceLinkedComponent.sol +192 -0
  490. package/contracts/shared/Lifecycle.sol +88 -0
  491. package/contracts/shared/NftIdSet.sol +65 -0
  492. package/contracts/shared/NftOwnable.sol +36 -27
  493. package/contracts/shared/PolicyHolder.sol +23 -41
  494. package/contracts/shared/Registerable.sol +52 -20
  495. package/contracts/shared/RegistryLinked.sol +9 -19
  496. package/contracts/shared/Service.sol +38 -29
  497. package/contracts/shared/TokenHandler.sol +327 -12
  498. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  499. package/contracts/staking/IStaking.sol +366 -0
  500. package/contracts/staking/IStakingService.sol +127 -0
  501. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  502. package/contracts/staking/Staking.sol +797 -0
  503. package/contracts/staking/StakingLib.sol +195 -0
  504. package/contracts/staking/StakingManager.sol +53 -0
  505. package/contracts/staking/StakingReader.sol +171 -0
  506. package/contracts/staking/StakingService.sol +321 -0
  507. package/contracts/staking/StakingServiceManager.sol +46 -0
  508. package/contracts/staking/StakingStore.sol +1368 -0
  509. package/contracts/staking/TargetHandler.sol +132 -0
  510. package/contracts/staking/TargetManagerLib.sol +234 -0
  511. package/contracts/{types → type}/AddressSet.sol +1 -1
  512. package/contracts/type/Amount.sol +154 -0
  513. package/contracts/{types → type}/Blocknumber.sol +38 -19
  514. package/contracts/type/ChainId.sol +101 -0
  515. package/contracts/{types → type}/ClaimId.sol +31 -3
  516. package/contracts/type/Fee.sol +66 -0
  517. package/contracts/{types → type}/Key32.sol +2 -2
  518. package/contracts/type/Key32Set.sol +62 -0
  519. package/contracts/{types → type}/NftId.sol +28 -15
  520. package/contracts/{types → type}/NftIdSet.sol +2 -2
  521. package/contracts/type/ObjectType.sol +307 -0
  522. package/contracts/type/PayoutId.sol +82 -0
  523. package/contracts/{types → type}/Referral.sol +6 -1
  524. package/contracts/type/RequestId.sol +75 -0
  525. package/contracts/type/RiskId.sol +75 -0
  526. package/contracts/type/RoleId.sol +180 -0
  527. package/contracts/type/Seconds.sol +120 -0
  528. package/contracts/type/Selector.sol +107 -0
  529. package/contracts/{types → type}/StateId.sol +48 -4
  530. package/contracts/type/String.sol +65 -0
  531. package/contracts/{types → type}/Timestamp.sol +24 -7
  532. package/contracts/type/UFixed.sol +263 -0
  533. package/contracts/{types → type}/Version.sol +59 -7
  534. package/contracts/{shared → upgradeability}/IVersionable.sol +4 -1
  535. package/contracts/{shared → upgradeability}/ProxyManager.sol +118 -41
  536. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  537. package/contracts/{shared → upgradeability}/Versionable.sol +9 -6
  538. package/package.json +12 -8
  539. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  540. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  541. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  542. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -447
  543. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  544. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  545. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  546. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  547. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  548. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  550. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  551. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  552. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  553. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  554. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  555. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  556. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  557. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  558. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  559. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  560. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  561. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  562. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -254
  564. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  568. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  570. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1096
  572. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  574. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  575. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  576. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  578. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1553
  580. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -793
  582. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  584. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +0 -633
  585. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  586. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
  587. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  588. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -858
  589. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  591. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -347
  592. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  593. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -384
  594. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  595. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1000
  596. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  597. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  598. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  599. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  600. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  601. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  602. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  603. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  604. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  605. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  606. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  607. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  608. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  609. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  610. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  611. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  612. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  613. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  614. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  615. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  616. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  617. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  618. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  619. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  620. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  622. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  623. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  624. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  625. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  626. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  627. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  628. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  629. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  630. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  631. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  632. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  633. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  634. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  635. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  636. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  637. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  638. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  640. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  642. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  644. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  646. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  648. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  649. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  650. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  652. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  653. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  654. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  656. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  658. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  660. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  662. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  664. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  666. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  668. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  669. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  670. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  671. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  672. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  673. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  674. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  675. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  676. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  677. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  678. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  679. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  680. package/contracts/components/Component.sol +0 -221
  681. package/contracts/components/Distribution.sol +0 -293
  682. package/contracts/components/IComponent.sol +0 -68
  683. package/contracts/components/IDistributionComponent.sol +0 -79
  684. package/contracts/components/IPoolComponent.sol +0 -151
  685. package/contracts/components/IProductComponent.sol +0 -40
  686. package/contracts/components/Pool.sol +0 -378
  687. package/contracts/components/Product.sol +0 -289
  688. package/contracts/instance/BundleManager.sol +0 -125
  689. package/contracts/instance/InstanceAccessManager.sol +0 -297
  690. package/contracts/instance/ObjectManager.sol +0 -84
  691. package/contracts/instance/base/ComponentService.sol +0 -134
  692. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  693. package/contracts/instance/base/KeyValueStore.sol +0 -172
  694. package/contracts/instance/base/Lifecycle.sol +0 -100
  695. package/contracts/instance/module/IAccess.sol +0 -47
  696. package/contracts/instance/module/ISetup.sol +0 -46
  697. package/contracts/instance/module/ITreasury.sol +0 -23
  698. package/contracts/instance/service/ApplicationService.sol +0 -349
  699. package/contracts/instance/service/BundleService.sol +0 -299
  700. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  701. package/contracts/instance/service/ClaimService.sol +0 -151
  702. package/contracts/instance/service/DistributionService.sol +0 -394
  703. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  704. package/contracts/instance/service/IBundleService.sol +0 -55
  705. package/contracts/instance/service/IClaimService.sol +0 -61
  706. package/contracts/instance/service/IDistributionService.sol +0 -86
  707. package/contracts/instance/service/IPolicyService.sol +0 -70
  708. package/contracts/instance/service/IPoolService.sol +0 -20
  709. package/contracts/instance/service/IProductService.sol +0 -40
  710. package/contracts/instance/service/PolicyService.sol +0 -402
  711. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  712. package/contracts/instance/service/PoolService.sol +0 -109
  713. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  714. package/contracts/instance/service/ProductService.sol +0 -233
  715. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  716. package/contracts/registry/RegistryAccessManager.sol +0 -216
  717. package/contracts/registry/ReleaseManager.sol +0 -322
  718. package/contracts/shared/ContractDeployerLib.sol +0 -72
  719. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  720. package/contracts/test/TestFee.sol +0 -25
  721. package/contracts/test/TestRegisterable.sol +0 -18
  722. package/contracts/test/TestRoleId.sol +0 -14
  723. package/contracts/test/TestService.sol +0 -25
  724. package/contracts/test/TestToken.sol +0 -26
  725. package/contracts/test/TestVersion.sol +0 -44
  726. package/contracts/test/TestVersionable.sol +0 -17
  727. package/contracts/types/ChainId.sol +0 -38
  728. package/contracts/types/Fee.sol +0 -56
  729. package/contracts/types/NumberId.sol +0 -52
  730. package/contracts/types/ObjectType.sol +0 -156
  731. package/contracts/types/PayoutId.sol +0 -54
  732. package/contracts/types/RiskId.sol +0 -43
  733. package/contracts/types/RoleId.sol +0 -95
  734. package/contracts/types/Seconds.sol +0 -54
  735. package/contracts/types/UFixed.sol +0 -325
  736. /package/contracts/{types → type}/DistributorType.sol +0 -0
@@ -1,116 +1,317 @@
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
- import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
6
6
 
7
- import {IRegisterable} from "../shared/IRegisterable.sol";
8
7
  import {IRegistry} from "./IRegistry.sol";
9
- import {VersionPart} from "../types/Version.sol";
10
- import {REGISTRY} from "../types/ObjectType.sol";
11
- import {NftOwnable} from "../shared/NftOwnable.sol";
8
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
9
+ import {IStaking} from "../staking/IStaking.sol";
12
10
 
13
- /// @title contract to register token per GIF major release.
11
+ import {ChainId, ChainIdLib} from "../type/ChainId.sol";
12
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
13
+ import {VersionPart} from "../type/Version.sol";
14
+
15
+ /// @dev The TokenRegistry contract is used to whitelist/manage ERC-20 of tokens per major release.
16
+ /// Only whitelisted tokens can be used as default tokens for products, distribution and pools components.
14
17
  contract TokenRegistry is
15
- NftOwnable
18
+ AccessManaged,
19
+ IRegistryLinked
16
20
  {
17
- event LogRegistered(address token, string symbol, uint256 decimals);
18
- event LogTokenStateSet(address token, VersionPart majorVersion, bool active);
21
+ event LogTokenRegistryTokenRegistered(ChainId chainId, address token, uint256 decimals, string symbol);
22
+ event LogTokenRegistryTokenGlobalStateSet(ChainId chainId, address token, bool active);
23
+ event LogTokenRegistryTokenStateSet(ChainId chainId, address token, VersionPart release, bool active);
19
24
 
20
- error NotContract(address account);
21
- error NotToken(address account);
22
- error TokenDecimalsZero();
23
- error TokenMajorVersionInvalid(VersionPart majorVersion);
25
+ error ErrorTokenRegistryChainIdZero();
26
+ error ErrorTokenRegistryTokenAddressZero();
24
27
 
25
- address [] internal _token;
26
- mapping(address token => bool registered) internal _registered;
27
- mapping(address token => mapping(VersionPart majorVersion => bool isActive)) internal _active;
28
+ error ErrorTokenRegistryNotRemoteToken(ChainId chainId, address token);
29
+ error ErrorTokenRegistryTokenAlreadyRegistered(ChainId chainId, address token);
30
+ error ErrorTokenRegistryTokenNotContract(ChainId chainId, address token);
31
+ error ErrorTokenRegistryTokenNotErc20(ChainId chainId, address token);
28
32
 
29
- constructor(
30
- address registry
31
- )
32
- {
33
- initialize(registry);
33
+ error ErrorTokenRegistryTokenNotRegistered(ChainId chainId, address token);
34
+ error ErrorTokenRegistryMajorVersionInvalid(VersionPart release);
35
+
36
+ struct TokenInfo {
37
+ // slot 0
38
+ ChainId chainId; // 96
39
+ address token; // 20
40
+ uint8 decimals; // 8
41
+ bool active;
42
+ // slot 1
43
+ string symbol;
34
44
  }
35
45
 
36
- function initialize(address registry)
37
- public
38
- initializer()
46
+ mapping(ChainId chainId => mapping(address token => TokenInfo info)) internal _tokenInfo;
47
+ mapping(ChainId chainId => mapping(address token => mapping(VersionPart release => bool isActive))) internal _active;
48
+ TokenInfo [] internal _token;
49
+
50
+ IRegistry internal _registry;
51
+ ChainId internal _chainId = ChainIdLib.current();
52
+ IERC20Metadata internal _dipToken;
53
+
54
+ /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
55
+ modifier onlyRegisteredToken(ChainId chainId, address token) {
56
+ if (!isRegistered(chainId, token)) {
57
+ revert ErrorTokenRegistryTokenNotRegistered(chainId, token);
58
+ }
59
+ _;
60
+ }
61
+
62
+ constructor(IRegistry registry, IERC20Metadata dipToken)
63
+ AccessManaged(msg.sender)
39
64
  {
40
- initializeNftOwnable(msg.sender, registry);
65
+ // set authority
66
+ address authority = RegistryAdmin(registry.getRegistryAdminAddress()).authority();
67
+ setAuthority(authority);
68
+
69
+ _registry = registry;
70
+
71
+ // TODO deal with chains without a dip token
72
+ _dipToken = _verifyOnchainToken(address(dipToken));
73
+
74
+ // register dip token
75
+ _registerToken(
76
+ _chainId,
77
+ address(_dipToken),
78
+ _dipToken.decimals(),
79
+ _dipToken.symbol());
41
80
  }
42
81
 
43
82
 
44
- /// @dev link ownership of token registry to nft owner of registry service
45
- // TODO latter registry service will get new release, new address, new nft, TokenRegistry will not catch that -> use AccessManaged only for services
46
- function linkToNftOwnable(address registryAddress)
83
+ /// @dev register an onchain token.
84
+ /// this function verifies that the provided token address is a contract that implements
85
+ /// the non optional erc20 view functions.
86
+ function registerToken(address tokenAddress)
47
87
  external
48
- onlyOwner
88
+ restricted()
49
89
  {
50
- IRegistry registry = IRegistry(registryAddress);
51
- // TODO use _latest instead of _initial -> but _latest is 0 before first release activation
52
- address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getNextVersion());
90
+ // checks
91
+ IERC20Metadata token = _verifyOnchainToken(tokenAddress);
53
92
 
54
- _linkToNftOwnable(registryServiceAddress);
93
+ // effects
94
+ _registerToken(_chainId, tokenAddress, token.decimals(), token.symbol());
55
95
  }
56
96
 
57
- /// @dev token state is informative, registry have no clue about used tokens
58
- // component owner is responsible for token selection and operations
59
- // service MUST deny registration of component with inactive token
60
- function setActive(address token, VersionPart majorVersion, bool active)
97
+
98
+ /// @dev register the remote token with the provided attributes.
99
+ /// this function may not be used for tokens when chainId == block.chainid.
100
+ function registerRemoteToken(
101
+ ChainId chainId,
102
+ address token,
103
+ uint8 decimals,
104
+ string memory symbol
105
+ )
61
106
  external
62
- onlyOwner
107
+ restricted()
63
108
  {
64
- // verify that token is registered
65
- if (!_registered[token]) {
66
- _registerToken(token);
109
+ if (chainId == _chainId) {
110
+ revert ErrorTokenRegistryNotRemoteToken(chainId, token);
67
111
  }
68
112
 
113
+ _registerToken(chainId, token, decimals, symbol);
114
+ }
115
+
116
+
117
+ /// @dev set active flag on token itself.
118
+ /// when setting a token to active=false isActive will return false
119
+ /// regardless of release specific active value.
120
+ function setActive(
121
+ ChainId chainId,
122
+ address token,
123
+ bool active
124
+ )
125
+ external
126
+ restricted()
127
+ onlyRegisteredToken(chainId, token)
128
+ {
129
+ _tokenInfo[chainId][token].active = active;
130
+ emit LogTokenRegistryTokenGlobalStateSet(chainId, token, active);
131
+ }
132
+
133
+
134
+ /// @dev sets active state for specified token and release (major version).
135
+ /// internally calls setActiveWithVersionCheck() with enforcing version check.
136
+ /// token state is informative, registry have no clue about used tokens
137
+ /// component owner is responsible for token selection and operations
138
+ /// service MUST deny registration of component with inactive token.
139
+ function setActiveForVersion(
140
+ ChainId chainId,
141
+ address token,
142
+ VersionPart release,
143
+ bool active
144
+ )
145
+ external
146
+ restricted()
147
+ onlyRegisteredToken(chainId, token)
148
+ {
149
+ _setActiveWithVersionCheck(chainId, token, release, active, true);
150
+ }
151
+
152
+
153
+ /// @dev as setActiveForVersion() with the option to skip the version check.
154
+ /// enforcing the version check checks if the provided major version with the release manager.
155
+ /// the function reverts if the provided release is unknown to the release manager.
156
+ function setActiveWithVersionCheck(
157
+ ChainId chainId,
158
+ address token,
159
+ VersionPart release,
160
+ bool active,
161
+ bool enforceVersionCheck
162
+ )
163
+ external
164
+ restricted()
165
+ onlyRegisteredToken(chainId, token)
166
+ {
167
+ _setActiveWithVersionCheck(chainId, token, release, active, enforceVersionCheck);
168
+ }
169
+
170
+
171
+ function _setActiveWithVersionCheck(
172
+ ChainId chainId,
173
+ address token,
174
+ VersionPart release,
175
+ bool active,
176
+ bool enforceVersionCheck
177
+ )
178
+ internal
179
+ {
69
180
  // verify valid major version
70
- // ensure major version increments is one
71
- uint256 version = majorVersion.toInt();
72
- if (!getRegistry().isValidRelease(majorVersion)) {
73
- revert TokenMajorVersionInvalid(majorVersion);
181
+ if(enforceVersionCheck) {
182
+ uint256 version = release.toInt();
183
+ if (!getRegistry().isActiveRelease(release)) {
184
+ revert ErrorTokenRegistryMajorVersionInvalid(release);
185
+ }
74
186
  }
75
187
 
76
- _active[token][majorVersion] = active;
188
+ _active[chainId][token][release] = active;
189
+
190
+ emit LogTokenRegistryTokenStateSet(chainId, token, release, active);
191
+ }
77
192
 
78
- emit LogTokenStateSet(token, majorVersion, active);
193
+ /// @dev returns the dip token for this chain
194
+ function getDipToken() external view returns (IERC20Metadata dipToken) {
195
+ return _dipToken;
79
196
  }
80
197
 
198
+ /// @dev returns the number of registered tokens
81
199
  function tokens() external view returns (uint256) {
82
200
  return _token.length;
83
201
  }
84
202
 
85
- function getToken(uint256 idx) external view returns (IERC20Metadata token) {
86
- return IERC20Metadata(_token[idx]);
203
+ /// @dev returns the token info for the specified index position [0 .. tokens() - 1].
204
+ function getTokenInfo(uint256 idx) external view returns (TokenInfo memory tokenInfo) {
205
+ return _token[idx];
206
+ }
207
+
208
+ /// @dev returns the token info for the specified token coordinates.
209
+ function getTokenInfo(ChainId chainId, address token) external view returns (TokenInfo memory tokenInfo) {
210
+ return _tokenInfo[chainId][token];
87
211
  }
88
212
 
89
- function isRegistered(address token) external view returns (bool) {
90
- return _registered[token];
213
+ /// @dev returns true iff the specified token has been registered for this TokenRegistry contract.
214
+ function isRegistered(ChainId chainId, address token) public view returns (bool) {
215
+ return _tokenInfo[chainId][token].chainId.gtz();
216
+ }
217
+
218
+ /// @dev returns true iff both the token is active for the specfied release and the global token state is active
219
+ function isActive(ChainId chainId, address token, VersionPart release) external view returns (bool) {
220
+ if(!_tokenInfo[chainId][token].active) {
221
+ return false;
222
+ }
223
+
224
+ return _active[chainId][token][release];
91
225
  }
92
226
 
93
- function isActive(address token, VersionPart majorVersion) external view returns (bool) {
94
- return _active[token][majorVersion];
227
+ function getDipTokenAddress() external view returns (address) {
228
+ return address(_dipToken);
95
229
  }
96
230
 
97
- /// @dev some sanity checks to prevent unintended registration
98
- function _registerToken(address token) internal {
231
+ //--- IRegistryLinked --------------------------------------------------//
232
+
233
+ /// @dev returns the dip token for this chain
234
+ function getRegistry() public view returns (IRegistry) {
235
+ return _registry;
236
+ }
237
+
238
+ //--- internal functions ------------------------------------------------//
239
+
240
+
241
+ /// @dev checks if provided token address refers to a smart contract that implements
242
+ /// erc20 functionality (via its non-optional functions)
243
+ function _verifyOnchainToken(address tokenAddress)
244
+ internal
245
+ virtual
246
+ view
247
+ returns (IERC20Metadata token)
248
+ {
249
+ token = IERC20Metadata(tokenAddress);
99
250
 
100
251
  // MUST be contract
101
- if(token.code.length == 0) {
102
- revert NotContract(token);
252
+ if(tokenAddress.code.length == 0) {
253
+ revert ErrorTokenRegistryTokenNotContract(ChainIdLib.current(), tokenAddress);
103
254
  }
104
255
 
105
- // MUST have decimals > 0 (indicator that this is in fact an erc20 token)
106
- IERC20Metadata erc20 = IERC20Metadata(token);
107
- if(erc20.decimals() == 0) {
108
- revert TokenDecimalsZero();
256
+ // MUST implement required erc20 view functions
257
+ if(!_implementsErc20Functions(token)) {
258
+ revert ErrorTokenRegistryTokenNotErc20(ChainIdLib.current(), tokenAddress);
109
259
  }
260
+ }
261
+
262
+
263
+ /// @dev checks availability of non-optional view functions
264
+ /// https://eips.ethereum.org/EIPS/eip-20#methods
265
+ function _implementsErc20Functions(IERC20Metadata token) internal view returns (bool implementsErc20Functions) {
266
+ try token.totalSupply() returns (uint256) {
267
+ // so far so goood
268
+ } catch {
269
+ return false;
270
+ }
271
+
272
+ try token.balanceOf(address(1)) returns (uint256) {
273
+ // so far so goood
274
+ } catch {
275
+ return false;
276
+ }
277
+
278
+ try token.allowance(address(1), address(2)) returns (uint256) {
279
+ // so far so goood
280
+ } catch {
281
+ return false;
282
+ }
283
+
284
+ return true;
285
+ }
286
+
287
+ /// @dev some sanity checks to prevent unintended registration:
288
+ /// - token not yet registered
289
+ /// - chainId not zero
290
+ /// - token address not zero
291
+ function _registerToken(ChainId chainId, address token, uint8 decimals, string memory symbol) internal {
292
+
293
+ if (isRegistered(chainId, token)) {
294
+ revert ErrorTokenRegistryTokenAlreadyRegistered(chainId, token);
295
+ }
296
+
297
+ if(chainId.eqz()) {
298
+ revert ErrorTokenRegistryChainIdZero();
299
+ }
300
+
301
+ if(token == address(0)) {
302
+ revert ErrorTokenRegistryTokenAddressZero();
303
+ }
304
+
305
+ TokenInfo memory tokenInfo = TokenInfo({
306
+ chainId: chainId,
307
+ token: token,
308
+ decimals: decimals,
309
+ symbol: symbol,
310
+ active: true});
110
311
 
111
- _registered[token] = true;
112
- _token.push(token);
312
+ _tokenInfo[chainId][token] = tokenInfo;
313
+ _token.push(tokenInfo);
113
314
 
114
- emit LogRegistered(token, erc20.symbol(), erc20.decimals());
315
+ emit LogTokenRegistryTokenRegistered(chainId, token, decimals, symbol);
115
316
  }
116
317
  }
@@ -0,0 +1,210 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {Amount, AmountLib} from "../type/Amount.sol";
8
+ import {IComponent} from "./IComponent.sol";
9
+ import {IComponents} from "../instance/module/IComponents.sol";
10
+ import {IComponentService} from "./IComponentService.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {ObjectType, COMPONENT} from "../type/ObjectType.sol";
13
+ import {Registerable} from "../shared/Registerable.sol";
14
+ import {TokenHandler} from "../shared/TokenHandler.sol";
15
+ import {Version, VersionLib} from "../type/Version.sol";
16
+
17
+
18
+ abstract contract Component is
19
+ Registerable,
20
+ IComponent
21
+ {
22
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
23
+ bytes32 public constant COMPONENT_LOCATION_V1 = 0xffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00;
24
+
25
+ struct ComponentStorage {
26
+ string _name; // unique (per instance) component name
27
+ bool _isInterceptor;
28
+ IComponentService _componentService;
29
+ }
30
+
31
+
32
+ modifier onlyChainNft() {
33
+ if(msg.sender != getRegistry().getChainNftAddress()) {
34
+ revert ErrorComponentNotChainNft(msg.sender);
35
+ }
36
+ _;
37
+ }
38
+
39
+
40
+ function _getComponentStorage() private pure returns (ComponentStorage storage $) {
41
+ // solhint-disable-next-line no-inline-assembly
42
+ assembly {
43
+ $.slot := COMPONENT_LOCATION_V1
44
+ }
45
+ }
46
+
47
+
48
+ function __Component_init(
49
+ address authority,
50
+ address registry,
51
+ NftId parentNftId,
52
+ string memory name,
53
+ ObjectType componentType,
54
+ bool isInterceptor,
55
+ address initialOwner,
56
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
57
+ )
58
+ internal
59
+ virtual
60
+ onlyInitializing()
61
+ {
62
+ if (bytes(name).length == 0) {
63
+ revert ErrorComponentNameLengthZero();
64
+ }
65
+
66
+ __Registerable_init(
67
+ authority,
68
+ registry,
69
+ parentNftId,
70
+ componentType,
71
+ isInterceptor,
72
+ initialOwner,
73
+ registryData);
74
+
75
+ // set component state
76
+ ComponentStorage storage $ = _getComponentStorage();
77
+ $._name = name;
78
+ $._isInterceptor = isInterceptor;
79
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
80
+
81
+ _registerInterface(type(IAccessManaged).interfaceId);
82
+ _registerInterface(type(IComponent).interfaceId);
83
+ }
84
+
85
+
86
+ /// @dev callback function for nft transfers
87
+ /// may only be called by chain nft contract.
88
+ /// override internal function _nftTransferFrom to implement custom behaviour
89
+ function nftTransferFrom(address from, address to, uint256 tokenId, address operator)
90
+ external
91
+ onlyChainNft
92
+ {
93
+ _nftTransferFrom(from, to, tokenId, operator);
94
+ }
95
+
96
+
97
+ function getWallet() public view virtual returns (address walletAddress) {
98
+ return getTokenHandler().getWallet();
99
+ }
100
+
101
+ function getTokenHandler() public virtual view returns (TokenHandler tokenHandler) {
102
+ return getComponentInfo().tokenHandler;
103
+ }
104
+
105
+ function getToken() public view virtual returns (IERC20Metadata token) {
106
+ return getTokenHandler().TOKEN();
107
+ }
108
+
109
+ function getName() public view override returns(string memory name) {
110
+ return getComponentInfo().name;
111
+ }
112
+
113
+ function getVersion() public view virtual returns (Version version) {
114
+ return VersionLib.toVersion(1, 0, 0);
115
+ }
116
+
117
+ function getComponentInfo() public virtual view returns (IComponents.ComponentInfo memory info) {
118
+ if (isRegistered()) {
119
+ return _getComponentInfo();
120
+ } else {
121
+ return getInitialComponentInfo();
122
+ }
123
+ }
124
+
125
+ /// @dev defines initial component specification
126
+ /// overwrite this function according to your use case
127
+ function getInitialComponentInfo() public virtual view returns (IComponents.ComponentInfo memory info) {
128
+ return _getComponentInfo();
129
+ }
130
+
131
+
132
+ function isNftInterceptor() public virtual view returns(bool isInterceptor) {
133
+ if (isRegistered()) {
134
+ return getRegistry().getObjectInfo(address(this)).isInterceptor;
135
+ } else {
136
+ return _getComponentStorage()._isInterceptor;
137
+ }
138
+ }
139
+
140
+
141
+ function isRegistered() public virtual view returns (bool) {
142
+ return getRegistry().getNftIdForAddress(address(this)).gtz();
143
+ }
144
+
145
+
146
+ /// @dev Approves token hanlder to spend up to the specified amount of tokens.
147
+ /// Reverts if component wallet is not token handler itself.
148
+ /// Only component owner (nft holder) is authorizes to call this function.
149
+ function _approveTokenHandler(IERC20Metadata token, Amount amount)
150
+ internal
151
+ virtual
152
+ returns (Amount oldAllowanceAmount)
153
+ {
154
+ oldAllowanceAmount = AmountLib.toAmount(
155
+ token.allowance(address(getTokenHandler()), address(this)));
156
+
157
+ _getComponentStorage()._componentService.approveTokenHandler(
158
+ token,
159
+ amount);
160
+ }
161
+
162
+
163
+ /// @dev internal function for nft transfers.
164
+ /// handling logic that deals with nft transfers need to overwrite this function
165
+ function _nftTransferFrom(address from, address to, uint256 tokenId, address operator)
166
+ internal
167
+ virtual
168
+ // solhint-disable-next-line no-empty-blocks
169
+ {
170
+ // empty default implementation
171
+ }
172
+
173
+
174
+ /// @dev Sets the components wallet to the specified address.
175
+ /// Depending on the source of the component information this function needs to be overwritten.
176
+ /// eg for instance linked components that externally store this information with the instance store contract
177
+ function _setWallet(
178
+ address newWallet
179
+ )
180
+ internal
181
+ virtual
182
+ {
183
+ _getComponentStorage()._componentService.setWallet(newWallet);
184
+ }
185
+
186
+ function _setLocked(bool locked)
187
+ internal
188
+ virtual
189
+ {
190
+ _getComponentStorage()._componentService.setLocked(locked);
191
+ }
192
+
193
+
194
+ /// @dev depending on the source of the component information this function needs to be overwritten.
195
+ /// eg for instance linked components that externally store this information with the instance store contract
196
+ function _getComponentInfo() internal virtual view returns (IComponents.ComponentInfo memory info) {
197
+ ComponentStorage storage $ = _getComponentStorage();
198
+
199
+ return IComponents.ComponentInfo({
200
+ name: $._name,
201
+ tokenHandler: TokenHandler(address(0))
202
+ });
203
+ }
204
+
205
+ /// @dev returns the service address for the specified domain
206
+ /// gets address via lookup from registry using the major version form the linked instance
207
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
208
+ return getRegistry().getServiceAddress(domain, getRelease());
209
+ }
210
+ }