@etherisc/gif-next 0.0.2-9141c0d → 0.0.2-91b514c-961

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 (543) hide show
  1. package/README.md +567 -2
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1494 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +615 -0
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1224 -0
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +382 -0
  24. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  27. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1209 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +644 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +930 -0
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1580 -0
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +868 -0
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +829 -0
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1071 -0
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1445 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2002 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  53. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1388 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1612 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2389 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  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/IInstance.sol/IInstance.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +849 -0
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +808 -0
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +4 -0
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +1037 -0
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2036 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +716 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2458 -0
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1054 -0
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3728 -0
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  103. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.json +10 -0
  104. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  106. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  108. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.json +10 -0
  110. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  111. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  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 +938 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +632 -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/oracle/IOracleComponent.sol/IOracleComponent.json +753 -0
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +854 -0
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1231 -0
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +644 -0
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1261 -0
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +800 -0
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +880 -0
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +886 -0
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1230 -0
  144. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  145. package/artifacts/contracts/pool/Pool.sol/Pool.json +1006 -0
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1574 -0
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +808 -0
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +879 -0
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +740 -0
  156. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1140 -0
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  159. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +644 -0
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1496 -0
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +848 -0
  164. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +639 -0
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1064 -0
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +981 -0
  170. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  171. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +623 -0
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  173. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +997 -0
  174. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  175. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +480 -0
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1333 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +808 -0
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingService.sol/PricingService.json +911 -0
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +764 -0
  186. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  187. package/artifacts/contracts/product/Product.sol/Product.json +1098 -0
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  191. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
  193. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +827 -0
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +4 -0
  195. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1210 -0
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  197. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1043 -0
  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 +4 -0
  201. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +39 -0
  202. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +4 -0
  203. package/artifacts/contracts/registry/Registry.sol/Registry.json +1703 -0
  204. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2018 -0
  206. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  208. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  209. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1269 -0
  210. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  211. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +735 -0
  212. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -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 +1337 -0
  218. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  219. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  220. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  221. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  222. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  223. package/artifacts/contracts/shared/Component.sol/Component.json +686 -0
  224. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1487 -0
  226. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +816 -0
  228. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +485 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +661 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  234. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  235. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  236. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  237. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  238. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +611 -0
  240. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  241. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1127 -0
  242. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +688 -0
  244. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  245. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +510 -0
  246. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  247. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  248. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  249. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +147 -0
  250. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  251. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  252. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  253. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +329 -0
  254. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  255. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
  256. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  257. package/artifacts/contracts/shared/IService.sol/IService.json +399 -0
  258. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  259. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  260. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  261. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +776 -0
  262. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  263. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  264. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  265. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  266. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  267. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  268. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  269. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +209 -0
  270. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  271. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  272. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  273. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +378 -0
  274. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  275. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  276. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  277. package/artifacts/contracts/shared/Service.sol/Service.json +453 -0
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  279. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +723 -0
  280. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  281. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  282. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  283. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  284. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  285. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1491 -0
  286. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  287. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1167 -0
  288. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  289. package/artifacts/contracts/staking/Staking.sol/Staking.json +1888 -0
  290. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  292. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  294. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +792 -0
  296. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +560 -0
  298. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  299. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1380 -0
  300. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  301. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +736 -0
  302. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  303. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2297 -0
  304. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  305. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +617 -0
  306. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  307. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  308. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  310. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  312. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  314. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  316. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  318. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  320. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  321. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  322. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  324. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  325. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  326. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  328. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  330. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  332. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  334. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  336. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  338. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  342. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  344. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  346. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  348. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  350. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  352. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  354. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  355. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  356. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  358. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  360. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  362. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  363. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  364. package/contracts/accounting/AccountingService.sol +262 -0
  365. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  366. package/contracts/accounting/IAccountingService.sol +45 -0
  367. package/contracts/authorization/AccessAdmin.sol +704 -0
  368. package/contracts/authorization/AccessAdminLib.sol +183 -0
  369. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  370. package/contracts/authorization/Authorization.sol +365 -0
  371. package/contracts/authorization/IAccess.sol +57 -0
  372. package/contracts/authorization/IAccessAdmin.sol +170 -0
  373. package/contracts/authorization/IAuthorization.sol +80 -0
  374. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  375. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  376. package/contracts/distribution/BasicDistribution.sol +141 -0
  377. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  378. package/contracts/distribution/Distribution.sol +244 -0
  379. package/contracts/distribution/DistributionService.sol +385 -0
  380. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  381. package/contracts/distribution/IDistributionComponent.sol +43 -0
  382. package/contracts/distribution/IDistributionService.sol +103 -0
  383. package/contracts/examples/fire/DamageLevel.sol +59 -0
  384. package/contracts/examples/fire/FirePool.sol +86 -0
  385. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  386. package/contracts/examples/fire/FireProduct.sol +433 -0
  387. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  388. package/contracts/examples/fire/FireUSD.sol +26 -0
  389. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  390. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  391. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  392. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  393. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  394. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  395. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  396. package/contracts/instance/BundleSet.sol +130 -0
  397. package/contracts/instance/IInstance.sol +106 -0
  398. package/contracts/instance/IInstanceService.sol +88 -0
  399. package/contracts/instance/Instance.sol +304 -0
  400. package/contracts/instance/InstanceAdmin.sol +450 -0
  401. package/contracts/instance/InstanceAuthorizationV3.sol +235 -0
  402. package/contracts/instance/InstanceReader.sol +650 -0
  403. package/contracts/instance/InstanceService.sol +459 -0
  404. package/contracts/instance/InstanceServiceManager.sol +39 -0
  405. package/contracts/instance/InstanceStore.sol +298 -0
  406. package/contracts/instance/RiskSet.sol +118 -0
  407. package/contracts/instance/base/BalanceStore.sol +123 -0
  408. package/contracts/instance/base/Cloneable.sol +28 -0
  409. package/contracts/instance/base/ObjectCounter.sol +20 -0
  410. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  411. package/contracts/instance/base/ObjectSet.sol +77 -0
  412. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  413. package/contracts/instance/module/IBundle.sol +21 -0
  414. package/contracts/instance/module/IComponents.sol +62 -0
  415. package/contracts/instance/module/IDistribution.sol +54 -0
  416. package/contracts/instance/module/IPolicy.sol +105 -0
  417. package/contracts/instance/module/IRisk.sol +16 -0
  418. package/contracts/{Dip.sol → mock/Dip.sol} +2 -2
  419. package/contracts/oracle/BasicOracle.sol +45 -0
  420. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  421. package/contracts/oracle/IOracle.sol +41 -0
  422. package/contracts/oracle/IOracleComponent.sol +33 -0
  423. package/contracts/oracle/IOracleService.sol +66 -0
  424. package/contracts/oracle/Oracle.sol +154 -0
  425. package/contracts/oracle/OracleService.sol +310 -0
  426. package/contracts/oracle/OracleServiceManager.sol +39 -0
  427. package/contracts/pool/BasicPool.sol +173 -0
  428. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  429. package/contracts/pool/BundleService.sol +395 -0
  430. package/contracts/pool/BundleServiceManager.sol +39 -0
  431. package/contracts/pool/IBundleService.sol +115 -0
  432. package/contracts/pool/IPoolComponent.sol +62 -0
  433. package/contracts/pool/IPoolService.sol +165 -0
  434. package/contracts/pool/Pool.sol +343 -0
  435. package/contracts/pool/PoolLib.sol +216 -0
  436. package/contracts/pool/PoolService.sol +755 -0
  437. package/contracts/pool/PoolServiceManager.sol +39 -0
  438. package/contracts/product/ApplicationService.sol +274 -0
  439. package/contracts/product/ApplicationServiceManager.sol +38 -0
  440. package/contracts/product/BasicProduct.sol +49 -0
  441. package/contracts/product/BasicProductAuthorization.sol +56 -0
  442. package/contracts/product/ClaimService.sol +632 -0
  443. package/contracts/product/ClaimServiceManager.sol +38 -0
  444. package/contracts/product/IApplicationService.sol +69 -0
  445. package/contracts/product/IClaimService.sol +135 -0
  446. package/contracts/product/IPolicyService.sol +95 -0
  447. package/contracts/product/IPricingService.sol +40 -0
  448. package/contracts/product/IProductComponent.sol +62 -0
  449. package/contracts/product/IRiskService.sol +33 -0
  450. package/contracts/product/PolicyService.sol +664 -0
  451. package/contracts/product/PolicyServiceLib.sol +65 -0
  452. package/contracts/product/PolicyServiceManager.sol +39 -0
  453. package/contracts/product/PricingService.sol +309 -0
  454. package/contracts/product/PricingServiceManager.sol +39 -0
  455. package/contracts/product/Product.sol +467 -0
  456. package/contracts/product/RiskService.sol +154 -0
  457. package/contracts/product/RiskServiceManager.sol +39 -0
  458. package/contracts/registry/ChainNft.sol +249 -0
  459. package/contracts/registry/IRegistry.sol +170 -0
  460. package/contracts/registry/IRegistryService.sol +62 -0
  461. package/contracts/registry/IRelease.sol +29 -0
  462. package/contracts/registry/ITransferInterceptor.sol +6 -0
  463. package/contracts/registry/Registry.sol +730 -0
  464. package/contracts/registry/RegistryAdmin.sol +258 -0
  465. package/contracts/registry/RegistryAuthorization.sol +267 -0
  466. package/contracts/registry/RegistryService.sol +241 -0
  467. package/contracts/registry/RegistryServiceManager.sol +53 -0
  468. package/contracts/registry/ReleaseAdmin.sol +253 -0
  469. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  470. package/contracts/registry/ReleaseRegistry.sol +517 -0
  471. package/contracts/registry/ServiceAuthorizationV3.sol +331 -0
  472. package/contracts/registry/TokenRegistry.sol +316 -0
  473. package/contracts/shared/Component.sol +210 -0
  474. package/contracts/shared/ComponentService.sol +654 -0
  475. package/contracts/shared/ComponentServiceManager.sol +38 -0
  476. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  477. package/contracts/shared/ContractLib.sol +347 -0
  478. package/contracts/shared/IComponent.sol +58 -0
  479. package/contracts/shared/IComponentService.sol +110 -0
  480. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  481. package/contracts/shared/IKeyValueStore.sol +54 -0
  482. package/contracts/shared/ILifecycle.sol +31 -0
  483. package/contracts/shared/INftOwnable.sol +25 -0
  484. package/contracts/shared/IPolicyHolder.sol +35 -0
  485. package/contracts/shared/IRegisterable.sol +37 -0
  486. package/contracts/shared/IRegistryLinked.sol +11 -0
  487. package/contracts/shared/IService.sol +23 -0
  488. package/contracts/shared/InitializableERC165.sol +35 -0
  489. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  490. package/contracts/shared/KeyValueStore.sol +131 -0
  491. package/contracts/shared/Lifecycle.sol +88 -0
  492. package/contracts/shared/NftIdSet.sol +65 -0
  493. package/contracts/shared/NftOwnable.sol +127 -0
  494. package/contracts/shared/PolicyHolder.sol +62 -0
  495. package/contracts/shared/Registerable.sol +106 -0
  496. package/contracts/shared/RegistryLinked.sol +38 -0
  497. package/contracts/shared/Service.sol +65 -0
  498. package/contracts/shared/TokenHandler.sol +342 -0
  499. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  500. package/contracts/staking/IStaking.sol +179 -0
  501. package/contracts/staking/IStakingService.sol +172 -0
  502. package/contracts/staking/Staking.sol +546 -0
  503. package/contracts/staking/StakingLib.sol +281 -0
  504. package/contracts/staking/StakingLifecycle.sol +23 -0
  505. package/contracts/staking/StakingManager.sol +52 -0
  506. package/contracts/staking/StakingReader.sol +180 -0
  507. package/contracts/staking/StakingService.sol +464 -0
  508. package/contracts/staking/StakingServiceManager.sol +45 -0
  509. package/contracts/staking/StakingStore.sol +606 -0
  510. package/contracts/staking/TargetManagerLib.sol +211 -0
  511. package/contracts/type/AddressSet.sol +58 -0
  512. package/contracts/type/Amount.sol +150 -0
  513. package/contracts/type/Blocknumber.sol +142 -0
  514. package/contracts/type/ClaimId.sol +80 -0
  515. package/contracts/type/DistributorType.sol +55 -0
  516. package/contracts/type/Fee.sol +66 -0
  517. package/contracts/type/Key32.sol +50 -0
  518. package/contracts/type/Key32Set.sol +62 -0
  519. package/contracts/type/NftId.sol +85 -0
  520. package/contracts/type/NftIdSet.sol +62 -0
  521. package/contracts/type/ObjectType.sol +294 -0
  522. package/contracts/type/PayoutId.sol +82 -0
  523. package/contracts/type/Referral.sol +90 -0
  524. package/contracts/type/RequestId.sol +75 -0
  525. package/contracts/type/RiskId.sol +75 -0
  526. package/contracts/type/RoleId.sol +182 -0
  527. package/contracts/type/Seconds.sol +101 -0
  528. package/contracts/type/Selector.sol +107 -0
  529. package/contracts/type/StateId.sol +149 -0
  530. package/contracts/type/String.sol +53 -0
  531. package/contracts/type/Timestamp.sol +141 -0
  532. package/contracts/type/UFixed.sol +262 -0
  533. package/contracts/type/Version.sol +159 -0
  534. package/contracts/upgradeability/IVersionable.sol +53 -0
  535. package/contracts/upgradeability/ProxyManager.sol +234 -0
  536. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +20 -0
  537. package/contracts/upgradeability/Versionable.sol +59 -0
  538. package/package.json +31 -11
  539. package/artifacts/contracts/Dip.sol/DIP.dbg.json +0 -4
  540. package/artifacts/contracts/Dip.sol/DIP.json +0 -338
  541. package/artifacts/contracts/Lock.sol/Lock.dbg.json +0 -4
  542. package/artifacts/contracts/Lock.sol/Lock.json +0 -74
  543. package/contracts/Lock.sol +0 -34
@@ -0,0 +1,331 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {
5
+ ALL, ACCOUNTING, REGISTRY, RISK, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
6
+ } from "../../contracts/type/ObjectType.sol";
7
+
8
+ import {IAccess} from "../authorization/IAccess.sol";
9
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
10
+ import {IApplicationService} from "../product/IApplicationService.sol";
11
+ import {IBundleService} from "../pool/IBundleService.sol";
12
+ import {IClaimService} from "../product/IClaimService.sol";
13
+ import {IComponentService} from "../shared/IComponentService.sol";
14
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
15
+ import {IInstanceService} from "../instance/IInstanceService.sol";
16
+ import {IOracleService} from "../oracle/IOracleService.sol";
17
+ import {IPolicyService} from "../product/IPolicyService.sol";
18
+ import {IPoolService} from "../pool/IPoolService.sol";
19
+ import {IStakingService} from "../staking/IStakingService.sol";
20
+ import {IRegistryService} from "./IRegistryService.sol";
21
+ import {IRiskService} from "../product/IRiskService.sol";
22
+ import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
23
+
24
+
25
+ contract ServiceAuthorizationV3
26
+ is ServiceAuthorization
27
+ {
28
+
29
+ constructor(string memory commitHash)
30
+ ServiceAuthorization(commitHash, 3)
31
+ {}
32
+
33
+ function _setupDomains()
34
+ internal
35
+ override
36
+ {
37
+ _authorizeDomain(REGISTRY(), address(1));
38
+ _authorizeDomain(STAKING(), address(2));
39
+ _authorizeDomain(INSTANCE(), address(3));
40
+ _authorizeDomain(ACCOUNTING(), address(4));
41
+ _authorizeDomain(COMPONENT(), address(5));
42
+ _authorizeDomain(DISTRIBUTION(), address(6));
43
+ _authorizeDomain(PRICE(), address(7));
44
+ _authorizeDomain(BUNDLE(), address(8));
45
+ _authorizeDomain(POOL(), address(9));
46
+ _authorizeDomain(ORACLE(), address(10));
47
+ _authorizeDomain(RISK(), address(11));
48
+ _authorizeDomain(POLICY(), address(12));
49
+ _authorizeDomain(CLAIM(), address(13));
50
+ _authorizeDomain(APPLICATION(), address(14));
51
+ }
52
+
53
+
54
+ function _setupDomainAuthorizations()
55
+ internal
56
+ override
57
+ {
58
+ _setupIRegistryServiceAuthorization();
59
+ _setupStakingServiceAuthorization();
60
+ _setupInstanceServiceAuthorization();
61
+ _setupInstanceServiceAuthorization();
62
+ _setupAccountingServiceAuthorization();
63
+ _setupComponentServiceAuthorization();
64
+ _setupClaimServiceAuthorization();
65
+ _setupRiskServiceAuthorization();
66
+ _setupDistributionServiceAuthorization();
67
+ _setupPoolServiceAuthorization();
68
+ _setupBundleServiceAuthorization();
69
+ _setupOracleServiceAuthorization();
70
+ _setupApplicationServiceAuthorization();
71
+ _setupPolicyServiceAuthorization();
72
+ }
73
+
74
+
75
+ /// @dev registry service authorization.
76
+ /// authorized functions MUST be implemented with a restricted modifier
77
+ function _setupIRegistryServiceAuthorization()
78
+ internal
79
+ {
80
+ IAccess.FunctionInfo[] storage functions;
81
+
82
+ functions = _authorizeForService(REGISTRY(), APPLICATION());
83
+ _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
84
+
85
+ functions = _authorizeForService(REGISTRY(), BUNDLE());
86
+ _authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
87
+
88
+ functions = _authorizeForService(REGISTRY(), COMPONENT());
89
+ _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
90
+ _authorize(functions, IRegistryService.registerProductLinkedComponent.selector, "registerProductLinkedComponent");
91
+
92
+ functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
93
+ _authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
94
+
95
+ functions = _authorizeForService(REGISTRY(), INSTANCE());
96
+ _authorize(functions, IRegistryService.registerInstance.selector, "registerInstance");
97
+
98
+ functions = _authorizeForService(REGISTRY(), STAKING());
99
+ _authorize(functions, IRegistryService.registerStake.selector, "registerStake");
100
+ }
101
+
102
+
103
+ /// @dev staking service authorization.
104
+ /// authorized functions MUST be implemented with a restricted modifier
105
+ function _setupStakingServiceAuthorization()
106
+ internal
107
+ {
108
+ IAccess.FunctionInfo[] storage functions;
109
+
110
+ functions = _authorizeForService(STAKING(), INSTANCE());
111
+ _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
112
+ _authorize(functions, IStakingService.setInstanceLockingPeriod.selector, "setInstanceLockingPeriod");
113
+ _authorize(functions, IStakingService.setInstanceRewardRate.selector, "setInstanceRewardRate");
114
+ _authorize(functions, IStakingService.setInstanceMaxStakedAmount.selector, "setInstanceMaxStakedAmount");
115
+ _authorize(functions, IStakingService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
116
+ _authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
117
+
118
+ functions = _authorizeForService(STAKING(), ALL());
119
+ _authorize(functions, IStakingService.create.selector, "create");
120
+ _authorize(functions, IStakingService.stake.selector, "stake");
121
+ _authorize(functions, IStakingService.restakeToNewTarget.selector, "restakeToNewTarget");
122
+ _authorize(functions, IStakingService.updateRewards.selector, "updateRewards");
123
+ _authorize(functions, IStakingService.claimRewards.selector, "claimRewards");
124
+ _authorize(functions, IStakingService.unstake.selector, "unstake");
125
+ }
126
+
127
+
128
+ /// @dev Instance service function authorization.
129
+ function _setupInstanceServiceAuthorization()
130
+ internal
131
+ {
132
+ IAccess.FunctionInfo[] storage functions;
133
+ functions = _authorizeForService(INSTANCE(), ALL());
134
+ _authorize(functions, IInstanceService.setInstanceLocked.selector, "setInstanceLocked");
135
+ _authorize(functions, IInstanceService.setTargetLocked.selector, "setTargetLocked");
136
+
137
+ _authorize(functions, IInstanceService.createInstance.selector, "createInstance");
138
+ _authorize(functions, IInstanceService.upgradeInstanceReader.selector, "upgradeInstanceReader");
139
+ _authorize(functions, IInstanceService.upgradeMasterInstanceReader.selector, "upgradeMasterInstanceReader");
140
+
141
+ _authorize(functions, IInstanceService.setStakingLockingPeriod.selector, "setStakingLockingPeriod");
142
+ _authorize(functions, IInstanceService.setStakingRewardRate.selector, "setStakingRewardRate");
143
+ _authorize(functions, IInstanceService.setStakingMaxAmount.selector, "setStakingMaxAmount");
144
+ _authorize(functions, IInstanceService.refillStakingRewardReserves.selector, "refillStakingRewardReserves");
145
+ _authorize(functions, IInstanceService.withdrawStakingRewardReserves.selector, "withdrawStakingRewardReserves");
146
+ }
147
+
148
+ /// @dev Accounting service function authorization.
149
+ function _setupAccountingServiceAuthorization()
150
+ internal
151
+ {
152
+ IAccess.FunctionInfo[] storage functions;
153
+
154
+ functions = _authorizeForService(ACCOUNTING(), BUNDLE());
155
+ _authorize(functions, IAccountingService.increaseBundleBalance.selector, "increaseBundleBalance");
156
+ _authorize(functions, IAccountingService.decreaseBundleBalance.selector, "decreaseBundleBalance");
157
+
158
+ functions = _authorizeForService(ACCOUNTING(), COMPONENT());
159
+ _authorize(functions, IAccountingService.decreaseComponentFees.selector, "decreaseComponentFees");
160
+
161
+ functions = _authorizeForService(ACCOUNTING(), DISTRIBUTION());
162
+ _authorize(functions, IAccountingService.increaseDistributionBalance.selector, "increaseDistributionBalance");
163
+ _authorize(functions, IAccountingService.decreaseDistributionBalance.selector, "decreaseDistributionBalance");
164
+ _authorize(functions, IAccountingService.increaseDistributorBalance.selector, "increaseDistributorBalance");
165
+ _authorize(functions, IAccountingService.decreaseDistributorBalance.selector, "decreaseDistributorBalance");
166
+
167
+ functions = _authorizeForService(ACCOUNTING(), POLICY());
168
+ _authorize(functions, IAccountingService.increaseProductFees.selector, "increaseProductFees");
169
+
170
+ functions = _authorizeForService(ACCOUNTING(), POOL());
171
+ _authorize(functions, IAccountingService.increasePoolBalance.selector, "increasePoolBalance");
172
+ _authorize(functions, IAccountingService.decreasePoolBalance.selector, "decreasePoolBalance");
173
+ _authorize(functions, IAccountingService.increaseBundleBalanceForPool.selector, "increaseBundleBalanceForPool");
174
+ _authorize(functions, IAccountingService.decreaseBundleBalanceForPool.selector, "decreaseBundleBalanceForPool");
175
+
176
+ }
177
+
178
+
179
+ /// @dev Component service function authorization.
180
+ function _setupComponentServiceAuthorization()
181
+ internal
182
+ {
183
+ IAccess.FunctionInfo[] storage functions;
184
+
185
+ functions = _authorizeForService(COMPONENT(), ALL());
186
+ _authorize(functions, IComponentService.registerComponent.selector, "registerComponent");
187
+ _authorize(functions, IComponentService.approveTokenHandler.selector, "approveTokenHandler");
188
+ _authorize(functions, IComponentService.setWallet.selector, "setWallet");
189
+ _authorize(functions, IComponentService.setLocked.selector, "setLocked");
190
+ _authorize(functions, IComponentService.withdrawFees.selector, "withdrawFees");
191
+ _authorize(functions, IComponentService.registerProduct.selector, "registerProduct");
192
+ _authorize(functions, IComponentService.setProductFees.selector, "setProductFees");
193
+ _authorize(functions, IComponentService.setDistributionFees.selector, "setDistributionFees");
194
+ _authorize(functions, IComponentService.setPoolFees.selector, "setPoolFees");
195
+
196
+ }
197
+
198
+ /// @dev Distribution service function authorization.
199
+ function _setupRiskServiceAuthorization()
200
+ internal
201
+ {
202
+ IAccess.FunctionInfo[] storage functions;
203
+ functions = _authorizeForService(RISK(), ALL());
204
+ _authorize(functions, IRiskService.createRisk.selector, "createRisk");
205
+ _authorize(functions, IRiskService.updateRisk.selector, "updateRisk");
206
+ _authorize(functions, IRiskService.updateRiskState.selector, "updateRiskState");
207
+ }
208
+
209
+ /// @dev Distribution service function authorization.
210
+ function _setupClaimServiceAuthorization()
211
+ internal
212
+ {
213
+ IAccess.FunctionInfo[] storage functions;
214
+ functions = _authorizeForService(CLAIM(), ALL());
215
+ _authorize(functions, IClaimService.submit.selector, "submit");
216
+ _authorize(functions, IClaimService.confirm.selector, "confirm");
217
+ _authorize(functions, IClaimService.decline.selector, "decline");
218
+ _authorize(functions, IClaimService.revoke.selector, "revoke");
219
+ _authorize(functions, IClaimService.close.selector, "close");
220
+ _authorize(functions, IClaimService.createPayoutForBeneficiary.selector, "createPayoutForBeneficiary");
221
+ _authorize(functions, IClaimService.createPayout.selector, "createPayout");
222
+ _authorize(functions, IClaimService.processPayout.selector, "processPayout");
223
+ _authorize(functions, IClaimService.cancelPayout.selector, "cancelPayout");
224
+ }
225
+
226
+ /// @dev Distribution service function authorization.
227
+ function _setupDistributionServiceAuthorization()
228
+ internal
229
+ {
230
+ IAccess.FunctionInfo[] storage functions;
231
+ functions = _authorizeForService(DISTRIBUTION(), POLICY());
232
+ _authorize(functions, IDistributionService.processSale.selector, "processSale");
233
+ _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
234
+
235
+ functions = _authorizeForService(DISTRIBUTION(), ALL());
236
+ _authorize(functions, IDistributionService.createDistributorType.selector, "createDistributorType");
237
+ _authorize(functions, IDistributionService.createDistributor.selector, "createDistributor");
238
+ _authorize(functions, IDistributionService.changeDistributorType.selector, "changeDistributorType");
239
+ _authorize(functions, IDistributionService.createReferral.selector, "createReferral");
240
+ _authorize(functions, IDistributionService.withdrawCommission.selector, "withdrawCommission");
241
+ }
242
+
243
+
244
+ /// @dev Pool service function authorization.
245
+ function _setupPoolServiceAuthorization()
246
+ internal
247
+ {
248
+ IAccess.FunctionInfo[] storage functions;
249
+
250
+ functions = _authorizeForService(POOL(), POLICY());
251
+ _authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
252
+ _authorize(functions, IPoolService.releaseCollateral.selector, "releaseCollateral");
253
+ _authorize(functions, IPoolService.processSale.selector, "processSale");
254
+
255
+ functions = _authorizeForService(POOL(), CLAIM());
256
+ _authorize(functions, IPoolService.processPayout.selector, "processPayout");
257
+
258
+ functions = _authorizeForService(POOL(), ALL());
259
+ _authorize(functions, IPoolService.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
260
+ _authorize(functions, IPoolService.closeBundle.selector, "closeBundle");
261
+ _authorize(functions, IPoolService.processFundedClaim.selector, "processFundedClaim");
262
+ _authorize(functions, IPoolService.stake.selector, "stake");
263
+ _authorize(functions, IPoolService.unstake.selector, "unstake");
264
+ _authorize(functions, IPoolService.fundPoolWallet.selector, "fundPoolWallet");
265
+ _authorize(functions, IPoolService.defundPoolWallet.selector, "defundPoolWallet");
266
+ _authorize(functions, IPoolService.withdrawBundleFees.selector, "withdrawBundleFees");
267
+ }
268
+
269
+
270
+ /// @dev Instance service function authorization.
271
+ function _setupBundleServiceAuthorization()
272
+ internal
273
+ {
274
+ IAccess.FunctionInfo[] storage functions;
275
+
276
+ functions = _authorizeForService(BUNDLE(), POOL());
277
+ _authorize(functions, IBundleService.stake.selector, "stake");
278
+ _authorize(functions, IBundleService.unstake.selector, "unstake");
279
+ _authorize(functions, IBundleService.close.selector, "close");
280
+ _authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
281
+ _authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
282
+
283
+ functions = _authorizeForService(BUNDLE(), ALL());
284
+ _authorize(functions, IBundleService.create.selector, "create");
285
+ _authorize(functions, IBundleService.extend.selector, "extend");
286
+ _authorize(functions, IBundleService.lock.selector, "lock");
287
+ _authorize(functions, IBundleService.unlock.selector, "unlock");
288
+ _authorize(functions, IBundleService.setFee.selector, "setFee");
289
+ }
290
+
291
+ function _setupOracleServiceAuthorization()
292
+ internal
293
+ {
294
+ IAccess.FunctionInfo[] storage functions;
295
+
296
+ functions = _authorizeForService(ORACLE(), ALL());
297
+ _authorize(functions, IOracleService.request.selector, "request");
298
+ _authorize(functions, IOracleService.respond.selector, "respond");
299
+ _authorize(functions, IOracleService.resend.selector, "resend");
300
+ _authorize(functions, IOracleService.cancel.selector, "cancel");
301
+ }
302
+
303
+ function _setupApplicationServiceAuthorization()
304
+ internal
305
+ {
306
+ IAccess.FunctionInfo[] storage functions;
307
+
308
+ functions = _authorizeForService(APPLICATION(), ALL());
309
+ _authorize(functions, IApplicationService.create.selector, "create");
310
+ _authorize(functions, IApplicationService.renew.selector, "renew");
311
+ _authorize(functions, IApplicationService.adjust.selector, "adjust");
312
+ _authorize(functions, IApplicationService.revoke.selector, "revoke");
313
+ }
314
+
315
+ function _setupPolicyServiceAuthorization()
316
+ internal
317
+ {
318
+ IAccess.FunctionInfo[] storage functions;
319
+
320
+ functions = _authorizeForService(POLICY(), ALL());
321
+ _authorize(functions, IPolicyService.decline.selector, "decline");
322
+ _authorize(functions, IPolicyService.createPolicy.selector, "createPolicy");
323
+ _authorize(functions, IPolicyService.collectPremium.selector, "collectPremium");
324
+ _authorize(functions, IPolicyService.activate.selector, "activate");
325
+ _authorize(functions, IPolicyService.expire.selector, "expire");
326
+ _authorize(functions, IPolicyService.expirePolicy.selector, "expirePolicy");
327
+ _authorize(functions, IPolicyService.close.selector, "close");
328
+
329
+ }
330
+ }
331
+
@@ -0,0 +1,316 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
7
+
8
+ import {REGISTRY} from "../type/ObjectType.sol";
9
+ import {VersionPart} from "../type/Version.sol";
10
+
11
+ import {IRegistry} from "./IRegistry.sol";
12
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
13
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
14
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
15
+
16
+ /// @dev The TokenRegistry contract is used to whitelist/manage ERC-20 of tokens per major release.
17
+ /// Only whitelisted tokens can be used as default tokens for products, distribution and pools components.
18
+ contract TokenRegistry is
19
+ AccessManaged,
20
+ IRegistryLinked
21
+ {
22
+ event LogTokenRegistryTokenRegistered(uint256 chainId, address token, uint256 decimals, string symbol);
23
+ event LogTokenRegistryTokenGlobalStateSet(uint256 chainId, address token, bool active);
24
+ event LogTokenRegistryTokenStateSet(uint256 chainId, address token, VersionPart majorVersion, bool active);
25
+
26
+ error ErrorTokenRegistryChainIdZero();
27
+ error ErrorTokenRegistryTokenAddressZero();
28
+
29
+ error ErrorTokenRegistryNotRemoteToken(uint256 chainId, address token);
30
+ error ErrorTokenRegistryTokenAlreadyRegistered(uint256 chainId, address token);
31
+ error ErrorTokenRegistryTokenNotContract(uint256 chainId, address token);
32
+ error ErrorTokenRegistryTokenNotErc20(uint256 chainId, address token);
33
+
34
+ error ErrorTokenRegistryTokenNotRegistered(uint256 chainId, address token);
35
+ error ErrorTokenRegistryMajorVersionInvalid(VersionPart majorVersion);
36
+
37
+ struct TokenInfo {
38
+ // slot 0
39
+ uint256 chainId;
40
+ // slot 1
41
+ string symbol;
42
+ // slot 2
43
+ address token;
44
+ uint8 decimals;
45
+ bool active;
46
+ }
47
+
48
+ mapping(uint256 chainId => mapping(address token => TokenInfo info)) internal _tokenInfo;
49
+ mapping(uint256 chainId => mapping(address token => mapping(VersionPart majorVersion => bool isActive))) internal _active;
50
+ TokenInfo [] internal _token;
51
+
52
+ IRegistry internal _registry;
53
+ ReleaseRegistry internal _releaseRegistry;
54
+ IERC20Metadata internal _dipToken;
55
+
56
+ /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
57
+ modifier onlyRegisteredToken(uint256 chainId, address token) {
58
+ if (!isRegistered(chainId, token)) {
59
+ revert ErrorTokenRegistryTokenNotRegistered(chainId, token);
60
+ }
61
+ _;
62
+ }
63
+
64
+ constructor(IRegistry registry, IERC20Metadata dipToken)
65
+ AccessManaged(msg.sender)
66
+ {
67
+ // set authority
68
+ address authority = RegistryAdmin(registry.getRegistryAdminAddress()).authority();
69
+ setAuthority(authority);
70
+
71
+ _registry = registry;
72
+ _dipToken = _verifyOnchainToken(address(dipToken));
73
+
74
+ // register dip token
75
+ uint256 chainId = block.chainid;
76
+ _registerToken(
77
+ chainId,
78
+ address(_dipToken),
79
+ _dipToken.decimals(),
80
+ _dipToken.symbol());
81
+ }
82
+
83
+
84
+ /// @dev register an onchain token.
85
+ /// this function verifies that the provided token address is a contract that implements
86
+ /// the non optional erc20 view functions.
87
+ function registerToken(address tokenAddress)
88
+ external
89
+ restricted()
90
+ {
91
+ IERC20Metadata token = _verifyOnchainToken(tokenAddress);
92
+ _registerToken(block.chainid, tokenAddress, token.decimals(), token.symbol());
93
+ }
94
+
95
+
96
+ /// @dev register the remote token with the provided attributes.
97
+ /// this function may not be used for tokens when chainId == block.chainid.
98
+ function registerRemoteToken(
99
+ uint256 chainId,
100
+ address token,
101
+ uint8 decimals,
102
+ string memory symbol
103
+ )
104
+ external
105
+ restricted()
106
+ {
107
+ if (chainId == block.chainid) {
108
+ revert ErrorTokenRegistryNotRemoteToken(chainId, token);
109
+ }
110
+
111
+ _registerToken(chainId, token, decimals, symbol);
112
+ }
113
+
114
+
115
+ /// @dev set active flag on token itself.
116
+ /// when setting a token to active=false isActive will return false
117
+ /// regardless of release specific active value.
118
+ function setActive(
119
+ uint256 chainId,
120
+ address token,
121
+ bool active
122
+ )
123
+ external
124
+ restricted()
125
+ onlyRegisteredToken(chainId, token)
126
+ {
127
+ _tokenInfo[chainId][token].active = active;
128
+ emit LogTokenRegistryTokenGlobalStateSet(chainId, token, active);
129
+ }
130
+
131
+
132
+ /// @dev sets active state for specified token and major version.
133
+ /// internally calls setActiveWithVersionCheck() with enforcing version check.
134
+ /// token state is informative, registry have no clue about used tokens
135
+ /// component owner is responsible for token selection and operations
136
+ /// service MUST deny registration of component with inactive token.
137
+ function setActiveForVersion(
138
+ uint256 chainId,
139
+ address token,
140
+ VersionPart majorVersion,
141
+ bool active
142
+ )
143
+ external
144
+ restricted()
145
+ onlyRegisteredToken(chainId, token)
146
+ {
147
+ _setActiveWithVersionCheck(chainId, token, majorVersion, active, true);
148
+ }
149
+
150
+
151
+ /// @dev as setActiveForVersion() with the option to skip the version check.
152
+ /// enforcing the version check checks if the provided major version with the release manager.
153
+ /// the function reverts if the provided majorVersion is unknown to the release manager.
154
+ function setActiveWithVersionCheck(
155
+ uint256 chainId,
156
+ address token,
157
+ VersionPart majorVersion,
158
+ bool active,
159
+ bool enforceVersionCheck
160
+ )
161
+ external
162
+ restricted()
163
+ onlyRegisteredToken(chainId, token)
164
+ {
165
+ _setActiveWithVersionCheck(chainId, token, majorVersion, active, enforceVersionCheck);
166
+ }
167
+
168
+
169
+ function _setActiveWithVersionCheck(
170
+ uint256 chainId,
171
+ address token,
172
+ VersionPart majorVersion,
173
+ bool active,
174
+ bool enforceVersionCheck
175
+ )
176
+ internal
177
+ {
178
+ // verify valid major version
179
+ if(enforceVersionCheck) {
180
+ uint256 version = majorVersion.toInt();
181
+ if (!getRegistry().isActiveRelease(majorVersion)) {
182
+ revert ErrorTokenRegistryMajorVersionInvalid(majorVersion);
183
+ }
184
+ }
185
+
186
+ _active[chainId][token][majorVersion] = active;
187
+
188
+ emit LogTokenRegistryTokenStateSet(chainId, token, majorVersion, active);
189
+ }
190
+
191
+ /// @dev returns the dip token for this chain
192
+ function getDipToken() external view returns (IERC20Metadata dipToken) {
193
+ return _dipToken;
194
+ }
195
+
196
+ /// @dev returns the number of registered tokens
197
+ function tokens() external view returns (uint256) {
198
+ return _token.length;
199
+ }
200
+
201
+ /// @dev returns the token info for the specified index position [0 .. tokens() - 1].
202
+ function getTokenInfo(uint256 idx) external view returns (TokenInfo memory tokenInfo) {
203
+ return _token[idx];
204
+ }
205
+
206
+ /// @dev returns the token info for the specified token coordinates.
207
+ function getTokenInfo(uint256 chainId, address token) external view returns (TokenInfo memory tokenInfo) {
208
+ return _tokenInfo[chainId][token];
209
+ }
210
+
211
+ /// @dev returns true iff the specified token has been registered for this TokenRegistry contract.
212
+ function isRegistered(uint256 chainId, address token) public view returns (bool) {
213
+ return _tokenInfo[chainId][token].chainId > 0;
214
+ }
215
+
216
+ /// @dev returns true iff both the token is active for the specfied release and the global token state is active
217
+ function isActive(uint256 chainId, address token, VersionPart release) external view returns (bool) {
218
+ if(!_tokenInfo[chainId][token].active) {
219
+ return false;
220
+ }
221
+
222
+ return _active[chainId][token][release];
223
+ }
224
+
225
+ function getDipTokenAddress() external view returns (address) {
226
+ return address(_dipToken);
227
+ }
228
+
229
+ //--- IRegistryLinked --------------------------------------------------//
230
+
231
+ /// @dev returns the dip token for this chain
232
+ function getRegistry() public view returns (IRegistry) {
233
+ return _registry;
234
+ }
235
+
236
+ //--- internal functions ------------------------------------------------//
237
+
238
+
239
+ /// @dev checks if provided token address refers to a smart contract that implements
240
+ /// erc20 functionality (via its non-optional functions)
241
+ function _verifyOnchainToken(address tokenAddress)
242
+ internal
243
+ virtual
244
+ view
245
+ returns (IERC20Metadata token)
246
+ {
247
+ token = IERC20Metadata(tokenAddress);
248
+ uint256 chainId = block.chainid;
249
+
250
+ // MUST be contract
251
+ if(tokenAddress.code.length == 0) {
252
+ revert ErrorTokenRegistryTokenNotContract(chainId, tokenAddress);
253
+ }
254
+
255
+ // MUST implement required erc20 view functions
256
+ if(!_implementsErc20Functions(token)) {
257
+ revert ErrorTokenRegistryTokenNotErc20(chainId, tokenAddress);
258
+ }
259
+ }
260
+
261
+
262
+ /// @dev checks availability of non-optional view functions
263
+ /// https://eips.ethereum.org/EIPS/eip-20#methods
264
+ function _implementsErc20Functions(IERC20Metadata token) internal view returns (bool implementsErc20Functions) {
265
+ try token.totalSupply() returns (uint256) {
266
+ // so far so goood
267
+ } catch {
268
+ return false;
269
+ }
270
+
271
+ try token.balanceOf(address(1)) returns (uint256) {
272
+ // so far so goood
273
+ } catch {
274
+ return false;
275
+ }
276
+
277
+ try token.allowance(address(1), address(2)) returns (uint256) {
278
+ // so far so goood
279
+ } catch {
280
+ return false;
281
+ }
282
+
283
+ return true;
284
+ }
285
+
286
+ /// @dev some sanity checks to prevent unintended registration:
287
+ /// - token not yet registered
288
+ /// - chainId not zero
289
+ /// - token address not zero
290
+ function _registerToken(uint256 chainId, address token, uint8 decimals, string memory symbol) internal {
291
+
292
+ if (isRegistered(chainId, token)) {
293
+ revert ErrorTokenRegistryTokenAlreadyRegistered(chainId, token);
294
+ }
295
+
296
+ if(chainId == 0) {
297
+ revert ErrorTokenRegistryChainIdZero();
298
+ }
299
+
300
+ if(token == address(0)) {
301
+ revert ErrorTokenRegistryTokenAddressZero();
302
+ }
303
+
304
+ TokenInfo memory tokenInfo = TokenInfo({
305
+ chainId: chainId,
306
+ token: token,
307
+ decimals: decimals,
308
+ symbol: symbol,
309
+ active: true});
310
+
311
+ _tokenInfo[chainId][token] = tokenInfo;
312
+ _token.push(tokenInfo);
313
+
314
+ emit LogTokenRegistryTokenRegistered(chainId, token, decimals, symbol);
315
+ }
316
+ }