@etherisc/gif-next 0.0.2-bb7b80e-316 → 0.0.2-bbb7ced-843

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