@etherisc/gif-next 0.0.2-bca28f1-161 → 0.0.2-bcecc4c-647

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 (675) hide show
  1. package/README.md +38 -86
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -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 +358 -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 +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +278 -477
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +311 -318
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +945 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +255 -1990
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +291 -208
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +415 -2834
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +659 -315
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +375 -475
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +254 -130
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3581 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → oracle/IOracleService.sol/IOracleService.json} +311 -292
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1093 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1520 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1483 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +492 -374
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +446 -338
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1205 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +446 -500
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1620 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +762 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +411 -383
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +121 -247
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +239 -303
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +262 -225
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +422 -250
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/product/IProductService.sol/IProductService.json +400 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1276 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +191 -18
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +185 -300
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +453 -34
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +347 -302
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +246 -126
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +307 -177
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +219 -220
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1696 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +222 -232
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +224 -113
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +285 -302
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -40
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -40
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -34
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +76 -164
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +19 -78
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -47
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +28 -90
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -36
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +88 -208
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  304. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  306. package/contracts/authorization/AccessAdmin.sol +591 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +138 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  318. package/contracts/{components → distribution}/Distribution.sol +180 -193
  319. package/contracts/distribution/DistributionService.sol +337 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  321. package/contracts/distribution/IDistributionComponent.sol +52 -0
  322. package/contracts/distribution/IDistributionService.sol +97 -0
  323. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +33 -32
  324. package/contracts/instance/IInstance.sol +72 -72
  325. package/contracts/instance/IInstanceService.sol +57 -24
  326. package/contracts/instance/Instance.sol +176 -203
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +173 -61
  330. package/contracts/instance/InstanceService.sol +316 -315
  331. package/contracts/instance/InstanceServiceManager.sol +13 -27
  332. package/contracts/instance/InstanceStore.sol +277 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  338. package/contracts/instance/module/IAccess.sol +19 -20
  339. package/contracts/instance/module/IBundle.sol +8 -8
  340. package/contracts/instance/module/{ISetup.sol → IComponents.sol} +23 -19
  341. package/contracts/instance/module/IDistribution.sol +6 -4
  342. package/contracts/instance/module/IPolicy.sol +56 -17
  343. package/contracts/instance/module/IRisk.sol +1 -1
  344. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +36 -0
  348. package/contracts/oracle/IOracleComponent.sol +33 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +166 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +39 -0
  353. package/contracts/pool/BasicPool.sol +164 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +55 -0
  355. package/contracts/pool/BundleService.sol +424 -0
  356. package/contracts/pool/BundleServiceManager.sol +39 -0
  357. package/contracts/pool/IBundleService.sol +128 -0
  358. package/contracts/pool/IPoolComponent.sol +58 -0
  359. package/contracts/pool/IPoolService.sol +155 -0
  360. package/contracts/pool/Pool.sol +332 -0
  361. package/contracts/pool/PoolService.sol +542 -0
  362. package/contracts/pool/PoolServiceManager.sol +39 -0
  363. package/contracts/product/ApplicationService.sol +230 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +82 -0
  366. package/contracts/product/BasicProductAuthorization.sol +43 -0
  367. package/contracts/product/ClaimService.sol +417 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/{instance/service → product}/IApplicationService.sol +17 -37
  370. package/contracts/product/IClaimService.sol +99 -0
  371. package/contracts/product/IPolicyService.sol +78 -0
  372. package/contracts/product/IPricingService.sol +39 -0
  373. package/contracts/product/IProductComponent.sol +40 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +476 -0
  376. package/contracts/product/PolicyServiceManager.sol +39 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +39 -0
  379. package/contracts/product/Product.sol +392 -0
  380. package/contracts/product/ProductService.sol +99 -0
  381. package/contracts/product/ProductServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +16 -1
  383. package/contracts/registry/IRegistry.sol +61 -26
  384. package/contracts/registry/IRegistryService.sol +45 -43
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +251 -139
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +89 -114
  389. package/contracts/registry/RegistryServiceManager.sol +24 -33
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseRegistry.sol +485 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +262 -60
  394. package/contracts/shared/Component.sol +280 -0
  395. package/contracts/shared/ComponentService.sol +651 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/IComponent.sol +70 -0
  399. package/contracts/shared/IComponentService.sol +108 -0
  400. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  401. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  402. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  403. package/contracts/shared/INftOwnable.sol +6 -11
  404. package/contracts/shared/IPolicyHolder.sol +29 -10
  405. package/contracts/shared/IRegistryLinked.sol +0 -4
  406. package/contracts/shared/IService.sol +15 -6
  407. package/contracts/shared/InitializableCustom.sol +177 -0
  408. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -3
  409. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  410. package/contracts/shared/KeyValueStore.sol +131 -0
  411. package/contracts/shared/Lifecycle.sol +77 -0
  412. package/contracts/shared/NftIdSet.sol +65 -0
  413. package/contracts/shared/NftOwnable.sol +12 -95
  414. package/contracts/shared/PolicyHolder.sol +41 -23
  415. package/contracts/shared/Registerable.sol +15 -21
  416. package/contracts/shared/RegistryLinked.sol +5 -26
  417. package/contracts/shared/Service.sol +52 -30
  418. package/contracts/shared/TokenHandler.sol +37 -6
  419. package/contracts/staking/IStaking.sol +167 -0
  420. package/contracts/staking/IStakingService.sol +160 -0
  421. package/contracts/staking/StakeManagerLib.sol +231 -0
  422. package/contracts/staking/Staking.sol +516 -0
  423. package/contracts/staking/StakingLifecycle.sol +23 -0
  424. package/contracts/staking/StakingManager.sol +50 -0
  425. package/contracts/staking/StakingReader.sol +183 -0
  426. package/contracts/staking/StakingService.sol +411 -0
  427. package/contracts/staking/StakingServiceManager.sol +44 -0
  428. package/contracts/staking/StakingStore.sol +605 -0
  429. package/contracts/staking/TargetManagerLib.sol +207 -0
  430. package/contracts/{types → type}/AddressSet.sol +1 -1
  431. package/contracts/type/Amount.sol +135 -0
  432. package/contracts/{types → type}/Blocknumber.sol +21 -3
  433. package/contracts/type/ClaimId.sol +75 -0
  434. package/contracts/{types → type}/Fee.sol +33 -23
  435. package/contracts/{types → type}/NftId.sol +21 -15
  436. package/contracts/{types → type}/NftIdSet.sol +2 -2
  437. package/contracts/type/ObjectType.sol +271 -0
  438. package/contracts/type/PayoutId.sol +82 -0
  439. package/contracts/{types → type}/Referral.sol +6 -1
  440. package/contracts/type/RequestId.sol +75 -0
  441. package/contracts/{types → type}/RiskId.sol +1 -1
  442. package/contracts/type/RoleId.sol +174 -0
  443. package/contracts/type/Seconds.sol +93 -0
  444. package/contracts/type/Selector.sol +102 -0
  445. package/contracts/{types → type}/StateId.sol +34 -4
  446. package/contracts/type/String.sol +53 -0
  447. package/contracts/{types → type}/Timestamp.sol +23 -14
  448. package/contracts/{types → type}/UFixed.sol +35 -9
  449. package/contracts/{types → type}/Version.sol +5 -2
  450. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  451. package/contracts/upgradeability/ProxyManager.sol +198 -0
  452. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  453. package/contracts/upgradeability/Versionable.sol +59 -0
  454. package/package.json +8 -5
  455. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  456. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  457. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  459. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  460. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  462. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  465. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  467. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  469. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  471. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  473. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  475. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  477. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  479. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  481. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  483. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  485. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  487. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  489. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  491. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  494. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  496. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  498. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  500. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  502. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  503. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  504. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  505. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  506. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  507. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  508. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  509. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  511. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  512. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  513. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  514. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  516. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  517. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  519. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1117
  520. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1318
  522. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -586
  524. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1176
  526. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -602
  528. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1378
  536. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -642
  538. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -957
  540. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -574
  542. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1007
  544. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -574
  546. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  547. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  548. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  549. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  550. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  551. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  552. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  553. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  554. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  555. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -499
  558. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  560. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  561. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  562. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  563. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  564. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -446
  566. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  568. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -759
  570. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  572. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  574. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  576. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  577. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  578. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  579. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  580. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  582. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  584. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  586. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  588. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  589. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  590. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  592. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  593. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  594. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  595. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  596. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  598. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  600. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  602. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  604. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  607. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  609. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  611. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  613. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  615. package/contracts/components/Component.sol +0 -236
  616. package/contracts/components/IComponent.sol +0 -50
  617. package/contracts/components/IDistributionComponent.sol +0 -100
  618. package/contracts/components/IPoolComponent.sol +0 -87
  619. package/contracts/components/IProductComponent.sol +0 -39
  620. package/contracts/components/Pool.sol +0 -254
  621. package/contracts/components/Product.sol +0 -278
  622. package/contracts/experiment/cloning/Cloner.sol +0 -47
  623. package/contracts/experiment/errors/Require.sol +0 -38
  624. package/contracts/experiment/errors/Revert.sol +0 -44
  625. package/contracts/experiment/inheritance/A.sol +0 -53
  626. package/contracts/experiment/inheritance/B.sol +0 -28
  627. package/contracts/experiment/inheritance/C.sol +0 -34
  628. package/contracts/experiment/inheritance/IA.sol +0 -13
  629. package/contracts/experiment/inheritance/IB.sol +0 -10
  630. package/contracts/experiment/inheritance/IC.sol +0 -12
  631. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  632. package/contracts/experiment/statemachine/ISM.sol +0 -25
  633. package/contracts/experiment/statemachine/SM.sol +0 -57
  634. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  635. package/contracts/experiment/types/TypeA.sol +0 -47
  636. package/contracts/experiment/types/TypeB.sol +0 -29
  637. package/contracts/instance/InstanceAccessManager.sol +0 -297
  638. package/contracts/instance/base/ComponentService.sol +0 -134
  639. package/contracts/instance/base/KeyValueStore.sol +0 -172
  640. package/contracts/instance/base/Lifecycle.sol +0 -100
  641. package/contracts/instance/module/ITreasury.sol +0 -23
  642. package/contracts/instance/service/ApplicationService.sol +0 -268
  643. package/contracts/instance/service/BundleService.sol +0 -298
  644. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  645. package/contracts/instance/service/DistributionService.sol +0 -277
  646. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  647. package/contracts/instance/service/IBundleService.sol +0 -54
  648. package/contracts/instance/service/IDistributionService.sol +0 -65
  649. package/contracts/instance/service/IPolicyService.sol +0 -88
  650. package/contracts/instance/service/IPoolService.sol +0 -20
  651. package/contracts/instance/service/IProductService.sol +0 -40
  652. package/contracts/instance/service/PolicyService.sol +0 -524
  653. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  654. package/contracts/instance/service/PoolService.sol +0 -109
  655. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  656. package/contracts/instance/service/ProductService.sol +0 -233
  657. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  658. package/contracts/registry/RegistryAccessManager.sol +0 -216
  659. package/contracts/registry/ReleaseManager.sol +0 -331
  660. package/contracts/shared/ContractDeployerLib.sol +0 -72
  661. package/contracts/shared/ProxyManager.sol +0 -95
  662. package/contracts/shared/Versionable.sol +0 -148
  663. package/contracts/test/TestFee.sol +0 -25
  664. package/contracts/test/TestRegisterable.sol +0 -18
  665. package/contracts/test/TestRoleId.sol +0 -14
  666. package/contracts/test/TestService.sol +0 -25
  667. package/contracts/test/TestVersion.sol +0 -44
  668. package/contracts/test/TestVersionable.sol +0 -17
  669. package/contracts/test/Usdc.sol +0 -26
  670. package/contracts/types/ChainId.sol +0 -38
  671. package/contracts/types/NumberId.sol +0 -52
  672. package/contracts/types/ObjectType.sol +0 -156
  673. package/contracts/types/RoleId.sol +0 -90
  674. /package/contracts/{types → type}/DistributorType.sol +0 -0
  675. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,200 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {
5
+ ALL, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE
6
+ } from "../../contracts/type/ObjectType.sol";
7
+
8
+ import {ComponentService} from "../shared/ComponentService.sol";
9
+ import {IAccess} from "../authorization/IAccess.sol";
10
+ import {IBundleService} from "../pool/IBundleService.sol";
11
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
12
+ import {InstanceService} from "../instance/InstanceService.sol";
13
+ import {IInstanceService} from "../instance/IInstanceService.sol";
14
+ import {IPoolService} from "../pool/IPoolService.sol";
15
+ import {IStakingService} from "../staking/IStakingService.sol";
16
+ import {IRegistryService} from "./IRegistryService.sol";
17
+ import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
18
+
19
+
20
+ contract ServiceAuthorizationV3
21
+ is ServiceAuthorization
22
+ {
23
+
24
+ constructor(string memory commitHash)
25
+ ServiceAuthorization(commitHash)
26
+ {}
27
+
28
+ function _setupDomains()
29
+ internal
30
+ override
31
+ {
32
+ _authorizeDomain(REGISTRY(), address(1));
33
+ _authorizeDomain(STAKING(), address(2));
34
+ _authorizeDomain(INSTANCE(), address(3));
35
+ _authorizeDomain(COMPONENT(), address(4));
36
+ _authorizeDomain(DISTRIBUTION(), address(5));
37
+ _authorizeDomain(PRICE(), address(6));
38
+ _authorizeDomain(BUNDLE(), address(7));
39
+ _authorizeDomain(POOL(), address(8));
40
+ _authorizeDomain(ORACLE(), address(9));
41
+ _authorizeDomain(PRODUCT(), address(10));
42
+ _authorizeDomain(CLAIM(), address(11));
43
+ _authorizeDomain(APPLICATION(), address(12));
44
+ _authorizeDomain(POLICY(), address(13));
45
+ }
46
+
47
+
48
+ function _setupDomainAuthorizations()
49
+ internal
50
+ override
51
+ {
52
+ _setupIRegistryServiceAuthorization();
53
+ _setupStakingServiceAuthorization();
54
+ _setupInstanceServiceAuthorization();
55
+ _setupComponentServiceAuthorization();
56
+ _setupDistributionServiceAuthorization();
57
+ _setupPoolServiceAuthorization();
58
+ _setupBundleServiceAuthorization();
59
+ }
60
+
61
+
62
+ /// @dev registry service authorization.
63
+ /// authorized functions MUST be implemented with a restricted modifier
64
+ function _setupIRegistryServiceAuthorization()
65
+ internal
66
+ {
67
+ IAccess.FunctionInfo[] storage functions;
68
+
69
+ functions = _authorizeForService(REGISTRY(), APPLICATION());
70
+ _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
71
+
72
+ // functions = _authorizeForService(REGISTRY(), POOL());
73
+ // _authorize(functions, IRegistryService.registerPool.selector, "registerPool");
74
+
75
+ functions = _authorizeForService(REGISTRY(), BUNDLE());
76
+ _authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
77
+
78
+ functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
79
+ // _authorize(functions, IRegistryService.registerDistribution.selector, "registerDistribution");
80
+ _authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
81
+
82
+ functions = _authorizeForService(REGISTRY(), COMPONENT());
83
+ _authorize(functions, IRegistryService.registerComponent.selector, "registerComponent");
84
+
85
+ functions = _authorizeForService(REGISTRY(), INSTANCE());
86
+ _authorize(functions, IRegistryService.registerInstance.selector, "registerInstance");
87
+
88
+ functions = _authorizeForService(REGISTRY(), STAKING());
89
+ _authorize(functions, IRegistryService.registerStake.selector, "registerStake");
90
+
91
+ // functions = _authorizeForService(REGISTRY(), PRODUCT());
92
+ // _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
93
+ }
94
+
95
+
96
+ /// @dev staking service authorization.
97
+ /// authorized functions MUST be implemented with a restricted modifier
98
+ function _setupStakingServiceAuthorization()
99
+ internal
100
+ {
101
+ IAccess.FunctionInfo[] storage functions;
102
+
103
+ functions = _authorizeForService(STAKING(), INSTANCE());
104
+ _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
105
+ _authorize(functions, IStakingService.setInstanceLockingPeriod.selector, "setInstanceLockingPeriod");
106
+ _authorize(functions, IStakingService.setInstanceRewardRate.selector, "setInstanceRewardRate");
107
+ _authorize(functions, IStakingService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
108
+ _authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
109
+
110
+ functions = _authorizeForService(STAKING(), ALL());
111
+ _authorize(functions, IStakingService.create.selector, "create");
112
+ _authorize(functions, IStakingService.stake.selector, "stake");
113
+ _authorize(functions, IStakingService.restakeToNewTarget.selector, "restakeToNewTarget");
114
+ _authorize(functions, IStakingService.updateRewards.selector, "updateRewards");
115
+ _authorize(functions, IStakingService.claimRewards.selector, "claimRewards");
116
+ _authorize(functions, IStakingService.unstake.selector, "unstake");
117
+ }
118
+
119
+
120
+ /// @dev Instance service function authorization.
121
+ function _setupInstanceServiceAuthorization()
122
+ internal
123
+ {
124
+ IAccess.FunctionInfo[] storage functions;
125
+
126
+ functions = _authorizeForService(INSTANCE(), COMPONENT());
127
+ _authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
128
+ }
129
+
130
+
131
+ /// @dev Component service function authorization.
132
+ function _setupComponentServiceAuthorization()
133
+ internal
134
+ {
135
+ // authz.authorizations = new DomainAuthorization[](4);
136
+
137
+ // authz.authorizations[0].domain = POLICY();
138
+ // _functions = new IAccessAdmin.Function[](1);
139
+ // __authorize(ComponentService.increaseProductFees.selector, "increaseProductFees"));
140
+ // authz.authorizations[0].functions = _functions;
141
+
142
+ // authz.authorizations[1].domain = DISTRIBUTION();
143
+ // _functions = new IAccessAdmin.Function[](1);
144
+ // __authorize(ComponentService.increaseDistributionBalance.selector, "increaseDistributionBalance"));
145
+ // authz.authorizations[1].functions = _functions;
146
+
147
+ // authz.authorizations[2].domain = POOL();
148
+ // _functions = new IAccessAdmin.Function[](1);
149
+ // __authorize(ComponentService.increasePoolBalance.selector, "increasePoolBalance"));
150
+ // authz.authorizations[2].functions = _functions;
151
+
152
+ // authz.authorizations[3].domain = BUNDLE();
153
+ // _functions = new IAccessAdmin.Function[](1);
154
+ // __authorize(ComponentService.increaseBundleBalance.selector, "increaseBundleBalance"));
155
+ // authz.authorizations[3].functions = _functions;
156
+ }
157
+
158
+ /// @dev Distribution service function authorization.
159
+ function _setupDistributionServiceAuthorization()
160
+ internal
161
+ {
162
+ IAccess.FunctionInfo[] storage functions;
163
+
164
+ functions = _authorizeForService(DISTRIBUTION(), POLICY());
165
+ _authorize(functions, IDistributionService.processSale.selector, "processSale");
166
+ }
167
+
168
+
169
+ /// @dev Pool service function authorization.
170
+ function _setupPoolServiceAuthorization()
171
+ internal
172
+ {
173
+ IAccess.FunctionInfo[] storage functions;
174
+
175
+ functions = _authorizeForService(POOL(), POLICY());
176
+ _authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
177
+ _authorize(functions, IPoolService.releaseCollateral.selector, "releaseCollateral");
178
+ _authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
179
+ _authorize(functions, IPoolService.processSale.selector, "processSale");
180
+
181
+ functions = _authorizeForService(POOL(), CLAIM());
182
+ _authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
183
+ }
184
+
185
+
186
+ /// @dev Instance service function authorization.
187
+ function _setupBundleServiceAuthorization()
188
+ internal
189
+ {
190
+ IAccess.FunctionInfo[] storage functions;
191
+
192
+ functions = _authorizeForService(BUNDLE(), POOL());
193
+ _authorize(functions, IBundleService.create.selector, "create");
194
+ _authorize(functions, IBundleService.close.selector, "close");
195
+ _authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
196
+ _authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
197
+ _authorize(functions, IBundleService.unlinkPolicy.selector, "unlinkPolicy");
198
+ }
199
+ }
200
+
@@ -1,113 +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 {VersionPart} from "../types/Version.sol";
10
- import {REGISTRY} from "../types/ObjectType.sol";
11
- 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
+
12
18
 
13
19
  /// @title contract to register token per GIF major release.
14
20
  contract TokenRegistry is
15
- NftOwnable
21
+ AccessManaged,
22
+ IRegistryLinked
16
23
  {
17
- event LogRegistered(address token, string symbol, uint256 decimals);
18
- event LogTokenStateSet(address token, VersionPart majorVersion, bool active);
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();
19
30
 
20
- error NotContract(address account);
21
- error NotToken(address account);
22
- error TokenDecimalsZero();
23
- error TokenMajorVersionInvalid(VersionPart majorVersion);
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);
24
35
 
25
- address [] internal _token;
26
- mapping(address token => bool registered) internal _registered;
27
- mapping(address token => mapping(VersionPart majorVersion => bool isActive)) internal _active;
36
+ error ErrorTokenRegistryTokenNotRegistered(uint256 chainId, address token);
37
+ error ErrorTokenRegistryMajorVersionInvalid(VersionPart majorVersion);
28
38
 
29
- constructor()
30
- {
31
- initializeOwner(msg.sender);
39
+ struct TokenInfo {
40
+ uint256 chainId;
41
+ address token;
42
+ uint8 decimals;
43
+ string symbol;
44
+ bool active;
32
45
  }
33
46
 
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;
34
50
 
35
- /// @dev link ownership of token registry to nft owner of registry service
36
- // TODO latter registry service will get new release, new address, new nft, TokenRegistry will not catch that -> use AccessManaged only for services
37
- function linkToNftOwnable(address registryAddress)
38
- external
39
- onlyOwner
51
+ IRegistry internal _registry;
52
+ ReleaseRegistry internal _releaseRegistry;
53
+ IERC20Metadata internal _dipToken;
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
+ }
62
+
63
+ constructor(IRegistry registry, IERC20Metadata dipToken)
64
+ AccessManaged(msg.sender)
40
65
  {
41
- IRegistry registry = IRegistry(registryAddress);
42
- // TODO use _latest instead of _initial -> but _latest is 0 before first release activation
43
- address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getNextVersion());
44
- //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getInitialVersion());
66
+ // set authority
67
+ address authority = RegistryAdmin(registry.getRegistryAdminAddress()).authority();
68
+ setAuthority(authority);
69
+
70
+ _registry = registry;
71
+ _dipToken = dipToken;
72
+
73
+ // register dip token
74
+ uint256 chainId = block.chainid;
75
+ _registerToken(
76
+ chainId,
77
+ address(_dipToken),
78
+ _dipToken.decimals(),
79
+ _dipToken.symbol());
80
+ }
81
+
45
82
 
46
- _linkToNftOwnable(registryAddress, registryServiceAddress);
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());
47
92
  }
48
93
 
49
- /// @dev token state is informative, registry have no clue about used tokens
50
- // component owner is responsible for token selection and operations
51
- // service MUST deny registration of component with inactive token
52
- function setActive(address token, VersionPart majorVersion, bool active)
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
+ )
53
103
  external
54
- onlyOwner
104
+ restricted()
55
105
  {
56
- // verify that token is registered
57
- if (!_registered[token]) {
58
- _registerToken(token);
106
+ if (chainId == block.chainid) {
107
+ revert ErrorTokenRegistryNotRemoteToken(chainId, token);
59
108
  }
60
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
+ {
61
177
  // verify valid major version
62
- // ensure major version increments is one
63
- uint256 version = majorVersion.toInt();
64
- if (!getRegistry().isValidRelease(majorVersion)) {
65
- revert TokenMajorVersionInvalid(majorVersion);
178
+ if(enforceVersionCheck) {
179
+ uint256 version = majorVersion.toInt();
180
+ if (!getRegistry().isActiveRelease(majorVersion)) {
181
+ revert ErrorTokenRegistryMajorVersionInvalid(majorVersion);
182
+ }
66
183
  }
67
184
 
68
- _active[token][majorVersion] = active;
185
+ _active[chainId][token][majorVersion] = active;
186
+
187
+ emit LogTokenRegistryTokenStateSet(chainId, token, majorVersion, active);
188
+ }
69
189
 
70
- 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;
71
193
  }
72
194
 
195
+ /// @dev returns the number of registered tokens
73
196
  function tokens() external view returns (uint256) {
74
197
  return _token.length;
75
198
  }
76
199
 
77
- function getToken(uint256 idx) external view returns (IERC20Metadata token) {
78
- 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;
79
213
  }
80
214
 
81
- function isRegistered(address token) external view returns (bool) {
82
- return _registered[token];
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];
222
+ }
223
+
224
+ function getDipTokenAddress() external view returns (address) {
225
+ return address(_dipToken);
83
226
  }
84
227
 
85
- function isActive(address token, VersionPart majorVersion) external view returns (bool) {
86
- 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;
87
233
  }
88
234
 
89
- /// @dev some sanity checks to prevent unintended registration
90
- 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;
91
248
 
92
249
  // MUST be contract
93
- if(token.code.length == 0) {
94
- revert NotContract(token);
250
+ if(tokenAddress.code.length == 0) {
251
+ revert ErrorTokenRegistryTokenNotContract(chainId, tokenAddress);
95
252
  }
96
253
 
97
- // MUST not be GIF registerable
98
- if(ERC165Checker.supportsInterface(token, type(IRegisterable).interfaceId)) {
99
- revert NotToken(token);
254
+ // MUST implement required erc20 view functions
255
+ if(!_implementsErc20Functions(token)) {
256
+ revert ErrorTokenRegistryTokenNotErc20(chainId, tokenAddress);
257
+ }
258
+ }
259
+
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;
100
280
  }
101
281
 
102
- // MUST have decimals > 0
103
- IERC20Metadata erc20 = IERC20Metadata(token);
104
- if(erc20.decimals() == 0) {
105
- revert TokenDecimalsZero();
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();
106
301
  }
107
302
 
108
- _registered[token] = true;
109
- _token.push(token);
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);
110
312
 
111
- emit LogRegistered(token, erc20.symbol(), erc20.decimals());
313
+ emit LogTokenRegistryTokenRegistered(chainId, token, decimals, symbol);
112
314
  }
113
315
  }