@etherisc/gif-next 0.0.2-e9148e0-933 → 0.0.2-e91c6be-472

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