@etherisc/gif-next 0.0.2-89368f7-609 → 0.0.2-8bdd2eb-413

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 (591) 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 +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -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 +814 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +73 -83
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +286 -1351
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +321 -212
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +463 -2526
  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 +204 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +485 -342
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +487 -425
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +350 -124
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3458 -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 +6 -1
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -144
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  42. package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  47. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  48. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  49. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +299 -278
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +216 -253
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +339 -296
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +276 -239
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +449 -229
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +125 -122
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  99. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +388 -127
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +382 -219
  104. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  106. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/Registry.sol/Registry.json +576 -182
  108. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +452 -330
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +331 -139
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  116. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  120. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  122. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  123. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  124. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  126. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  130. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  131. package/artifacts/contracts/{components/Pool.sol/Pool.json → shared/Component.sol/Component.json} +434 -380
  132. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  133. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
  134. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
  136. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  137. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +209 -204
  138. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  140. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  142. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  144. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  145. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +274 -125
  146. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
  148. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  149. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +246 -216
  150. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  151. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +51 -31
  152. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  154. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  155. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  156. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  157. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  158. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  160. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  161. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  162. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  163. package/artifacts/contracts/shared/IService.sol/IService.json +88 -176
  164. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  165. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  166. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  167. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  168. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  169. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  170. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  171. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  172. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  173. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  174. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  175. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  176. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  178. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  179. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  180. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  182. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  184. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  185. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  186. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Service.sol/Service.json +191 -165
  188. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  189. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  190. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  191. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  192. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  194. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  195. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  196. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  197. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  198. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  199. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  200. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  201. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  202. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  203. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  204. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  205. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  206. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  208. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  209. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  210. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  211. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  212. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  213. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  214. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  215. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  216. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  217. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  218. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  220. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  221. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  222. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  223. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  224. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  226. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  227. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  228. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  230. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  232. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  233. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  234. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  236. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  238. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  240. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  242. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  244. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  246. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  248. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  249. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  250. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  252. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  253. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  254. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  256. package/contracts/distribution/Distribution.sol +261 -0
  257. package/contracts/distribution/DistributionService.sol +298 -0
  258. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  259. package/contracts/distribution/IDistributionComponent.sol +66 -0
  260. package/contracts/distribution/IDistributionService.sol +81 -0
  261. package/contracts/instance/BundleManager.sol +22 -25
  262. package/contracts/instance/IInstance.sol +62 -45
  263. package/contracts/instance/IInstanceService.sol +60 -17
  264. package/contracts/instance/Instance.sol +155 -196
  265. package/contracts/instance/InstanceAdmin.sol +331 -0
  266. package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
  267. package/contracts/instance/InstanceReader.sol +136 -86
  268. package/contracts/instance/InstanceService.sol +272 -210
  269. package/contracts/instance/InstanceServiceManager.sol +12 -25
  270. package/contracts/instance/InstanceStore.sol +260 -0
  271. package/contracts/instance/base/BalanceStore.sol +118 -0
  272. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  273. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -35
  274. package/contracts/instance/module/IAccess.sol +20 -22
  275. package/contracts/instance/module/IBundle.sol +8 -8
  276. package/contracts/instance/module/IComponents.sol +52 -0
  277. package/contracts/instance/module/IDistribution.sol +7 -4
  278. package/contracts/instance/module/IPolicy.sol +56 -17
  279. package/contracts/instance/module/IRisk.sol +1 -1
  280. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  281. package/contracts/pool/BundleService.sol +296 -0
  282. package/contracts/pool/BundleServiceManager.sol +42 -0
  283. package/contracts/pool/IBundleService.sol +106 -0
  284. package/contracts/pool/IPoolComponent.sol +112 -0
  285. package/contracts/pool/IPoolService.sol +150 -0
  286. package/contracts/pool/Pool.sol +299 -0
  287. package/contracts/pool/PoolService.sol +453 -0
  288. package/contracts/pool/PoolServiceManager.sol +42 -0
  289. package/contracts/product/ApplicationService.sol +254 -0
  290. package/contracts/product/ApplicationServiceManager.sol +38 -0
  291. package/contracts/product/ClaimService.sol +442 -0
  292. package/contracts/product/ClaimServiceManager.sol +38 -0
  293. package/contracts/product/IApplicationService.sol +62 -0
  294. package/contracts/product/IClaimService.sol +93 -0
  295. package/contracts/product/IPolicyService.sol +78 -0
  296. package/contracts/product/IPricingService.sol +39 -0
  297. package/contracts/product/IProductComponent.sol +42 -0
  298. package/contracts/product/IProductService.sol +33 -0
  299. package/contracts/product/PolicyService.sol +475 -0
  300. package/contracts/product/PolicyServiceManager.sol +42 -0
  301. package/contracts/product/PricingService.sol +301 -0
  302. package/contracts/product/PricingServiceManager.sol +42 -0
  303. package/contracts/product/Product.sol +377 -0
  304. package/contracts/product/ProductService.sol +124 -0
  305. package/contracts/product/ProductServiceManager.sol +42 -0
  306. package/contracts/registry/ChainNft.sol +15 -0
  307. package/contracts/registry/IRegistry.sol +73 -30
  308. package/contracts/registry/IRegistryService.sol +47 -28
  309. package/contracts/registry/ITransferInterceptor.sol +1 -0
  310. package/contracts/registry/Registry.sol +375 -247
  311. package/contracts/registry/RegistryAdmin.sol +237 -0
  312. package/contracts/registry/RegistryService.sol +115 -207
  313. package/contracts/registry/RegistryServiceManager.sol +24 -46
  314. package/contracts/registry/ReleaseManager.sol +599 -0
  315. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  316. package/contracts/registry/TokenRegistry.sol +261 -57
  317. package/contracts/shared/AccessManagerCustom.sol +736 -0
  318. package/contracts/shared/AccessManagerExtended.sol +470 -0
  319. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  320. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  321. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  322. package/contracts/shared/Component.sol +278 -0
  323. package/contracts/shared/ComponentService.sol +596 -0
  324. package/contracts/shared/ComponentServiceManager.sol +35 -0
  325. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  326. package/contracts/shared/ERC165.sol +15 -13
  327. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  328. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  329. package/contracts/shared/IComponent.sol +70 -0
  330. package/contracts/shared/IComponentService.sol +91 -0
  331. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  332. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  333. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  334. package/contracts/shared/INftOwnable.sol +13 -12
  335. package/contracts/shared/IPolicyHolder.sol +45 -0
  336. package/contracts/shared/IRegisterable.sol +4 -6
  337. package/contracts/shared/IRegistryLinked.sol +11 -0
  338. package/contracts/shared/IService.sol +8 -5
  339. package/contracts/shared/IVersionable.sol +5 -48
  340. package/contracts/shared/InitializableCustom.sol +177 -0
  341. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  342. package/contracts/shared/KeyValueStore.sol +127 -0
  343. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  344. package/contracts/shared/NftIdSetManager.sol +65 -0
  345. package/contracts/shared/NftOwnable.sol +59 -86
  346. package/contracts/shared/PolicyHolder.sol +102 -0
  347. package/contracts/shared/ProxyManager.sol +131 -26
  348. package/contracts/shared/Registerable.sol +26 -41
  349. package/contracts/shared/RegistryLinked.sol +43 -0
  350. package/contracts/shared/Service.sol +46 -24
  351. package/contracts/shared/TokenHandler.sol +37 -6
  352. package/contracts/shared/Versionable.sol +4 -92
  353. package/contracts/staking/IStaking.sol +168 -0
  354. package/contracts/staking/IStakingService.sol +149 -0
  355. package/contracts/staking/StakeManagerLib.sol +179 -0
  356. package/contracts/staking/Staking.sol +551 -0
  357. package/contracts/staking/StakingManager.sol +54 -0
  358. package/contracts/staking/StakingReader.sol +187 -0
  359. package/contracts/staking/StakingService.sol +406 -0
  360. package/contracts/staking/StakingServiceManager.sol +45 -0
  361. package/contracts/staking/StakingStore.sol +572 -0
  362. package/contracts/staking/TargetManagerLib.sol +207 -0
  363. package/contracts/{types → type}/AddressSet.sol +1 -1
  364. package/contracts/type/Amount.sol +128 -0
  365. package/contracts/{types → type}/Blocknumber.sol +21 -3
  366. package/contracts/type/ClaimId.sol +75 -0
  367. package/contracts/{types → type}/DistributorType.sol +2 -2
  368. package/contracts/{types → type}/Fee.sol +33 -23
  369. package/contracts/{types → type}/NftId.sol +21 -15
  370. package/contracts/{types → type}/NftIdSet.sol +2 -2
  371. package/contracts/{types → type}/ObjectType.sol +26 -9
  372. package/contracts/type/PayoutId.sol +82 -0
  373. package/contracts/{types → type}/Referral.sol +5 -1
  374. package/contracts/{types → type}/RiskId.sol +1 -1
  375. package/contracts/type/RoleId.sol +143 -0
  376. package/contracts/type/Seconds.sol +81 -0
  377. package/contracts/{types → type}/StateId.sol +24 -6
  378. package/contracts/{types → type}/Timestamp.sol +18 -13
  379. package/contracts/{types → type}/UFixed.sol +1 -0
  380. package/contracts/{types → type}/Version.sol +2 -1
  381. package/package.json +3 -3
  382. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  383. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  384. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  385. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  386. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  387. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  388. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  389. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  390. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  391. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  392. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  393. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  394. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  395. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  396. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  397. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  398. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  399. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  400. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  401. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  402. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  403. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  404. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  405. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  406. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  407. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  408. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  409. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  410. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  411. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  412. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  413. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  414. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  415. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  416. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  417. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  418. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  419. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  420. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  421. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  422. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  423. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  424. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  425. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  426. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  427. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  428. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  429. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  430. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  431. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  432. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  433. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  434. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  435. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  436. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  437. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1102
  438. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  439. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  440. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  441. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  442. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  443. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  444. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  445. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  446. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -429
  447. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  448. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  449. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  450. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  451. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  452. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  453. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  454. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  455. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  456. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -923
  457. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  458. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -440
  459. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  460. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  461. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  462. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -684
  463. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  464. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  465. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  466. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  467. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
  468. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  469. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  470. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  471. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  472. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  473. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  474. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -984
  475. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  476. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  477. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  478. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -718
  479. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -428
  481. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -768
  483. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  485. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  486. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  487. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  488. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  489. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  490. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  491. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  492. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  493. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  494. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  495. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  496. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  497. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  498. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  499. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  500. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  501. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  502. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  503. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  504. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  505. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  506. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  507. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  508. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  509. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  510. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  511. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  512. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  513. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  514. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  515. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  516. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  517. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  518. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  519. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  520. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  521. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  522. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  523. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  524. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  525. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  526. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  527. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  528. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  529. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  530. package/contracts/components/BaseComponent.sol +0 -150
  531. package/contracts/components/Distribution.sol +0 -163
  532. package/contracts/components/IBaseComponent.sol +0 -32
  533. package/contracts/components/IDistributionComponent.sol +0 -44
  534. package/contracts/components/IPoolComponent.sol +0 -66
  535. package/contracts/components/IProductComponent.sol +0 -35
  536. package/contracts/components/Pool.sol +0 -271
  537. package/contracts/components/Product.sol +0 -292
  538. package/contracts/experiment/cloning/Cloner.sol +0 -47
  539. package/contracts/experiment/errors/Require.sol +0 -38
  540. package/contracts/experiment/errors/Revert.sol +0 -44
  541. package/contracts/experiment/inheritance/A.sol +0 -53
  542. package/contracts/experiment/inheritance/B.sol +0 -28
  543. package/contracts/experiment/inheritance/C.sol +0 -34
  544. package/contracts/experiment/inheritance/IA.sol +0 -13
  545. package/contracts/experiment/inheritance/IB.sol +0 -10
  546. package/contracts/experiment/inheritance/IC.sol +0 -12
  547. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  548. package/contracts/experiment/statemachine/ISM.sol +0 -25
  549. package/contracts/experiment/statemachine/SM.sol +0 -57
  550. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  551. package/contracts/experiment/types/TypeA.sol +0 -47
  552. package/contracts/experiment/types/TypeB.sol +0 -29
  553. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  554. package/contracts/instance/IInstanceBase.sol +0 -26
  555. package/contracts/instance/InstanceAccessManager.sol +0 -311
  556. package/contracts/instance/InstanceBase.sol +0 -41
  557. package/contracts/instance/base/ComponentServiceBase.sol +0 -74
  558. package/contracts/instance/base/IInstanceBase.sol +0 -23
  559. package/contracts/instance/base/KeyValueStore.sol +0 -172
  560. package/contracts/instance/module/ISetup.sol +0 -46
  561. package/contracts/instance/module/ITreasury.sol +0 -23
  562. package/contracts/instance/service/BundleService.sol +0 -260
  563. package/contracts/instance/service/BundleServiceManager.sol +0 -54
  564. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  565. package/contracts/instance/service/DistributionService.sol +0 -120
  566. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  567. package/contracts/instance/service/IBundleService.sol +0 -45
  568. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  569. package/contracts/instance/service/IDistributionService.sol +0 -12
  570. package/contracts/instance/service/IPolicyService.sol +0 -87
  571. package/contracts/instance/service/IPoolService.sol +0 -20
  572. package/contracts/instance/service/IProductService.sol +0 -40
  573. package/contracts/instance/service/PolicyService.sol +0 -508
  574. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  575. package/contracts/instance/service/PoolService.sol +0 -126
  576. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  577. package/contracts/instance/service/ProductService.sol +0 -175
  578. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  579. package/contracts/shared/ContractDeployerLib.sol +0 -72
  580. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  581. package/contracts/test/TestFee.sol +0 -25
  582. package/contracts/test/TestRegisterable.sol +0 -18
  583. package/contracts/test/TestRoleId.sol +0 -14
  584. package/contracts/test/TestService.sol +0 -24
  585. package/contracts/test/TestToken.sol +0 -26
  586. package/contracts/test/TestVersion.sol +0 -44
  587. package/contracts/test/TestVersionable.sol +0 -17
  588. package/contracts/types/ChainId.sol +0 -38
  589. package/contracts/types/NumberId.sol +0 -52
  590. package/contracts/types/RoleId.sol +0 -91
  591. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,173 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {
5
+ RoleId,
6
+ PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE,
7
+ APPLICATION_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, COMPONENT_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, INSTANCE_SERVICE_ROLE, POLICY_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, STAKING_SERVICE_ROLE
8
+ } from "../../contracts/type/RoleId.sol";
9
+
10
+ import {
11
+ ObjectType,
12
+ REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE
13
+ } from "../../contracts/type/ObjectType.sol";
14
+
15
+ import {ComponentService} from "../shared/ComponentService.sol";
16
+ import {InstanceService} from "../instance/InstanceService.sol";
17
+ import {RegistryService} from "./RegistryService.sol";
18
+
19
+ library ServiceAuthorizationsLib {
20
+
21
+ struct ServiceAuthorization {
22
+ RoleId[] authorizedRole;
23
+ bytes4[][] authorizedSelectors;
24
+ }
25
+
26
+ /// @dev returns the full list of gif service domains for this release.
27
+ /// services need to be registered for the release in revers order of this list.
28
+ function getDomains()
29
+ external
30
+ pure
31
+ returns(
32
+ ObjectType[] memory domain
33
+ )
34
+ {
35
+ domain = new ObjectType[](11);
36
+ domain[0] = POLICY();
37
+ domain[1] = APPLICATION();
38
+ domain[2] = CLAIM();
39
+ domain[3] = PRODUCT();
40
+ domain[4] = POOL();
41
+ domain[5] = BUNDLE();
42
+ domain[6] = PRICE();
43
+ domain[7] = DISTRIBUTION();
44
+ domain[8] = COMPONENT();
45
+ domain[9] = INSTANCE();
46
+ domain[10] = STAKING();
47
+ }
48
+
49
+
50
+ /// @dev given the target domain this function returns the list of authorized function signatures per authorized domain.
51
+ function getAuthorizations(ObjectType domain)
52
+ external
53
+ pure
54
+ returns(
55
+ ServiceAuthorization memory authorizations
56
+ )
57
+ {
58
+ if(domain == REGISTRY()) { return _getRegistryServiceAuthorization(); }
59
+ if(domain == INSTANCE()) { return _getInstanceServiceAuthorization(); }
60
+ if(domain == COMPONENT()) { return _getComponentServiceAuthorization(); }
61
+
62
+ // disallows access to all functions with a restricted modifier
63
+ return _getDefaultAuthorizations();
64
+ }
65
+
66
+
67
+ /// @dev registry service authorization.
68
+ /// returns all authorized function signatures per authorized domain.
69
+ /// all listed functions MUST be implemented with a restricted modifier
70
+ function _getRegistryServiceAuthorization()
71
+ internal
72
+ pure
73
+ returns (ServiceAuthorization memory authz)
74
+ {
75
+ uint8 authorizedRoles = 8;
76
+ authz.authorizedRole = new RoleId[](authorizedRoles);
77
+ authz.authorizedSelectors = new bytes4[][](authorizedRoles);
78
+
79
+ // TODO role ids need to have a stable setup, this is not the case currently
80
+ authz.authorizedRole[0] = APPLICATION_SERVICE_ROLE();
81
+ authz.authorizedSelectors[0] = new bytes4[](1);
82
+ authz.authorizedSelectors[0][0] = RegistryService.registerPolicy.selector;
83
+
84
+ authz.authorizedRole[1] = POOL_SERVICE_ROLE();
85
+ authz.authorizedSelectors[1] = new bytes4[](1);
86
+ authz.authorizedSelectors[1][0] = RegistryService.registerPool.selector;
87
+
88
+ authz.authorizedRole[2] = BUNDLE_SERVICE_ROLE();
89
+ authz.authorizedSelectors[2] = new bytes4[](1);
90
+ authz.authorizedSelectors[2][0] = RegistryService.registerBundle.selector;
91
+
92
+ authz.authorizedRole[3] = DISTRIBUTION_SERVICE_ROLE();
93
+ authz.authorizedSelectors[3] = new bytes4[](2);
94
+ authz.authorizedSelectors[3][0] = RegistryService.registerDistribution.selector;
95
+ authz.authorizedSelectors[3][1] = RegistryService.registerDistributor.selector;
96
+
97
+ authz.authorizedRole[4] = COMPONENT_SERVICE_ROLE();
98
+ authz.authorizedSelectors[4] = new bytes4[](1);
99
+ authz.authorizedSelectors[4][0] = RegistryService.registerComponent.selector;
100
+
101
+ authz.authorizedRole[5] = INSTANCE_SERVICE_ROLE();
102
+ authz.authorizedSelectors[5] = new bytes4[](1);
103
+ authz.authorizedSelectors[5][0] = RegistryService.registerInstance.selector;
104
+
105
+ authz.authorizedRole[6] = STAKING_SERVICE_ROLE();
106
+ authz.authorizedSelectors[6] = new bytes4[](1);
107
+ authz.authorizedSelectors[6][0] = RegistryService.registerStaking.selector;
108
+
109
+ authz.authorizedRole[7] = PRODUCT_SERVICE_ROLE();
110
+ authz.authorizedSelectors[7] = new bytes4[](1);
111
+ authz.authorizedSelectors[7][0] = RegistryService.registerProduct.selector;
112
+ }
113
+
114
+
115
+ /// @dev instance service authorization.
116
+ /// returns all authorized function signatures per authorized domain.
117
+ /// all listed functions MUST be implemented with a restricted modifier
118
+ function _getInstanceServiceAuthorization()
119
+ internal
120
+ pure
121
+ returns (ServiceAuthorization memory authz)
122
+ {
123
+ uint8 authorizedRoles = 1;
124
+ authz.authorizedRole = new RoleId[](authorizedRoles);
125
+ authz.authorizedSelectors = new bytes4[][](authorizedRoles);
126
+
127
+ authz.authorizedRole[0] = COMPONENT_SERVICE_ROLE();
128
+ authz.authorizedSelectors[0] = new bytes4[](1);
129
+ authz.authorizedSelectors[0][0] = InstanceService.createComponentTarget.selector;
130
+ }
131
+
132
+
133
+ /// @dev component service authorization.
134
+ /// returns all authorized function signatures per authorized domain.
135
+ /// all listed functions MUST be implemented with a restricted modifier
136
+ function _getComponentServiceAuthorization()
137
+ internal
138
+ pure
139
+ returns (ServiceAuthorization memory authz)
140
+ {
141
+ uint8 authorizedRoles = 4;
142
+ authz.authorizedRole = new RoleId[](authorizedRoles);
143
+ authz.authorizedSelectors = new bytes4[][](authorizedRoles);
144
+
145
+ authz.authorizedRole[0] = POLICY_SERVICE_ROLE();
146
+ authz.authorizedSelectors[0] = new bytes4[](1);
147
+ authz.authorizedSelectors[0][0] = ComponentService.increaseProductFees.selector;
148
+
149
+ authz.authorizedRole[1] = DISTRIBUTION_SERVICE_ROLE();
150
+ authz.authorizedSelectors[1] = new bytes4[](1);
151
+ authz.authorizedSelectors[1][0] = ComponentService.increaseDistributionBalance.selector;
152
+
153
+ authz.authorizedRole[2] = POOL_SERVICE_ROLE();
154
+ authz.authorizedSelectors[2] = new bytes4[](1);
155
+ authz.authorizedSelectors[2][0] = ComponentService.increasePoolBalance.selector;
156
+
157
+ authz.authorizedRole[3] = BUNDLE_SERVICE_ROLE();
158
+ authz.authorizedSelectors[3] = new bytes4[](1);
159
+ authz.authorizedSelectors[3][0] = ComponentService.increaseBundleBalance.selector;
160
+ }
161
+
162
+
163
+ function _getDefaultAuthorizations()
164
+ internal
165
+ pure
166
+ returns (ServiceAuthorization memory authz)
167
+ {
168
+ uint8 authorizedRoles = 0;
169
+ authz.authorizedRole = new RoleId[](authorizedRoles);
170
+ authz.authorizedSelectors = new bytes4[][](authorizedRoles);
171
+ }
172
+ }
173
+
@@ -1,111 +1,315 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
4
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
6
  import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
6
7
 
8
+ import {REGISTRY} from "../type/ObjectType.sol";
9
+ import {VersionPart} from "../type/Version.sol";
10
+
7
11
  import {IRegisterable} from "../shared/IRegisterable.sol";
12
+
8
13
  import {IRegistry} from "./IRegistry.sol";
9
- import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
10
- import {NftOwnable} from "../shared/NftOwnable.sol";
14
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
15
+ import {ReleaseManager} from "./ReleaseManager.sol";
16
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
17
+
11
18
 
12
19
  /// @title contract to register token per GIF major release.
13
20
  contract TokenRegistry is
14
- NftOwnable
21
+ AccessManaged,
22
+ IRegistryLinked
15
23
  {
24
+ event LogTokenRegistryTokenRegistered(uint256 chainId, address token, uint256 decimals, string symbol);
25
+ event LogTokenRegistryTokenGlobalStateSet(uint256 chainId, address token, bool active);
26
+ event LogTokenRegistryTokenStateSet(uint256 chainId, address token, VersionPart majorVersion, bool active);
27
+
28
+ error ErrorTokenRegistryChainIdZero();
29
+ error ErrorTokenRegistryTokenAddressZero();
16
30
 
17
- string public constant REGISTRY_SERVICE_NAME = "RegistryService";
31
+ error ErrorTokenRegistryNotRemoteToken(uint256 chainId, address token);
32
+ error ErrorTokenRegistryTokenAlreadyRegistered(uint256 chainId, address token);
33
+ error ErrorTokenRegistryTokenNotContract(uint256 chainId, address token);
34
+ error ErrorTokenRegistryTokenNotErc20(uint256 chainId, address token);
18
35
 
19
- event LogRegistered(address token, string symbol, uint256 decimals);
20
- event LogTokenStateSet(address token, VersionPart majorVersion, bool active);
36
+ error ErrorTokenRegistryTokenNotRegistered(uint256 chainId, address token);
37
+ error ErrorTokenRegistryMajorVersionInvalid(VersionPart majorVersion);
21
38
 
22
- error NotContract(address account);
23
- error NotToken(address account);
24
- error TokenDecimalsZero();
25
- error TokenMajorVersionInvalid(VersionPart majorVersion);
39
+ struct TokenInfo {
40
+ uint256 chainId;
41
+ address token;
42
+ uint8 decimals;
43
+ string symbol;
44
+ bool active;
45
+ }
26
46
 
27
- address [] internal _token;
28
- mapping(address token => bool registered) internal _registered;
29
- mapping(address token => mapping(VersionPart majorVersion => bool isActive)) internal _active;
47
+ mapping(uint256 chainId => mapping(address token => TokenInfo info)) internal _tokenInfo;
48
+ mapping(uint256 chainId => mapping(address token => mapping(VersionPart majorVersion => bool isActive))) internal _active;
49
+ TokenInfo [] internal _token;
30
50
 
31
- constructor()
32
- NftOwnable()
33
- { }
51
+ IRegistry internal _registry;
52
+ ReleaseManager internal _releaseManager;
53
+ IERC20Metadata internal _dipToken;
34
54
 
55
+ /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
56
+ modifier onlyRegisteredToken(uint256 chainId, address token) {
57
+ if (!isRegistered(chainId, token)) {
58
+ revert ErrorTokenRegistryTokenNotRegistered(chainId, token);
59
+ }
60
+ _;
61
+ }
35
62
 
36
- /// @dev link ownership of token registry to nft owner of registry service
37
- function linkToNftOwnable(address registryAddress)
38
- external
39
- onlyOwner
63
+ constructor(IRegistry registry, IERC20Metadata dipToken)
64
+ AccessManaged(msg.sender)
40
65
  {
41
- IRegistry registry = IRegistry(registryAddress);
42
- address registryServiceAddress = registry.getServiceAddress(REGISTRY_SERVICE_NAME, registry.getMajorVersion());
66
+ // set authority
67
+ address authority = RegistryAdmin(registry.getRegistryAdminAddress()).authority();
68
+ setAuthority(authority);
69
+
70
+ _registry = registry;
71
+ _dipToken = dipToken;
43
72
 
44
- _linkToNftOwnable(registryAddress, registryServiceAddress);
73
+ // register dip token
74
+ uint256 chainId = block.chainid;
75
+ _registerToken(
76
+ chainId,
77
+ address(_dipToken),
78
+ _dipToken.decimals(),
79
+ _dipToken.symbol());
45
80
  }
46
81
 
47
- /// @dev token state is informative, registry have no clue about used tokens
48
- // component owner is responsible for token selection and operations
49
- // service MUST deny registration of component with inactive token
50
- function setActive(address token, VersionPart majorVersion, bool active)
82
+
83
+ /// @dev register an onchain token.
84
+ /// this function verifies that the provided token address is a contract that implements
85
+ /// the non optional erc20 view functions.
86
+ function registerToken(address tokenAddress)
87
+ external
88
+ restricted()
89
+ {
90
+ IERC20Metadata token = _verifyOnchainToken(tokenAddress);
91
+ _registerToken(block.chainid, tokenAddress, token.decimals(), token.symbol());
92
+ }
93
+
94
+
95
+ /// @dev register the remote token with the provided attributes.
96
+ /// this function may not be used for tokens when chainId == block.chainid.
97
+ function registerRemoteToken(
98
+ uint256 chainId,
99
+ address token,
100
+ uint8 decimals,
101
+ string memory symbol
102
+ )
51
103
  external
52
- onlyOwner
104
+ restricted()
53
105
  {
54
- // verify that token is registered
55
- if (!_registered[token]) {
56
- _registerToken(token);
106
+ if (chainId == block.chainid) {
107
+ revert ErrorTokenRegistryNotRemoteToken(chainId, token);
57
108
  }
58
109
 
110
+ _registerToken(chainId, token, decimals, symbol);
111
+ }
112
+
113
+
114
+ /// @dev set active flag on token itself.
115
+ /// when setting a token to active=false isActive will return false
116
+ /// regardless of release specific active value.
117
+ function setActive(
118
+ uint256 chainId,
119
+ address token,
120
+ bool active
121
+ )
122
+ external
123
+ restricted()
124
+ onlyRegisteredToken(chainId, token)
125
+ {
126
+ _tokenInfo[chainId][token].active = active;
127
+ emit LogTokenRegistryTokenGlobalStateSet(chainId, token, active);
128
+ }
129
+
130
+
131
+ /// @dev sets active state for specified token and major version.
132
+ /// internally calls setActiveWithVersionCheck() with enforcing version check.
133
+ /// token state is informative, registry have no clue about used tokens
134
+ /// component owner is responsible for token selection and operations
135
+ /// service MUST deny registration of component with inactive token.
136
+ function setActiveForVersion(
137
+ uint256 chainId,
138
+ address token,
139
+ VersionPart majorVersion,
140
+ bool active
141
+ )
142
+ external
143
+ restricted()
144
+ onlyRegisteredToken(chainId, token)
145
+ {
146
+ _setActiveWithVersionCheck(chainId, token, majorVersion, active, true);
147
+ }
148
+
149
+
150
+ /// @dev as setActiveForVersion() with the option to skip the version check.
151
+ /// enforcing the version check checks if the provided major version with the release manager.
152
+ /// the function reverts if the provided majorVersion is unknown to the release manager.
153
+ function setActiveWithVersionCheck(
154
+ uint256 chainId,
155
+ address token,
156
+ VersionPart majorVersion,
157
+ bool active,
158
+ bool enforceVersionCheck
159
+ )
160
+ external
161
+ restricted()
162
+ onlyRegisteredToken(chainId, token)
163
+ {
164
+ _setActiveWithVersionCheck(chainId, token, majorVersion, active, enforceVersionCheck);
165
+ }
166
+
167
+
168
+ function _setActiveWithVersionCheck(
169
+ uint256 chainId,
170
+ address token,
171
+ VersionPart majorVersion,
172
+ bool active,
173
+ bool enforceVersionCheck
174
+ )
175
+ internal
176
+ {
59
177
  // verify valid major version
60
- // ensure major version increments is one
61
- uint256 version = majorVersion.toInt();
62
- if (version < _registry.getMajorVersionMin().toInt() || version > _registry.getMajorVersionMax().toInt()) {
63
- revert TokenMajorVersionInvalid(majorVersion);
178
+ if(enforceVersionCheck) {
179
+ uint256 version = majorVersion.toInt();
180
+ if (!getRegistry().isActiveRelease(majorVersion)) {
181
+ revert ErrorTokenRegistryMajorVersionInvalid(majorVersion);
182
+ }
64
183
  }
65
184
 
66
- _active[token][majorVersion] = active;
185
+ _active[chainId][token][majorVersion] = active;
186
+
187
+ emit LogTokenRegistryTokenStateSet(chainId, token, majorVersion, active);
188
+ }
67
189
 
68
- emit LogTokenStateSet(token, majorVersion, active);
190
+ /// @dev returns the dip token for this chain
191
+ function getDipToken() external view returns (IERC20Metadata dipToken) {
192
+ return _dipToken;
69
193
  }
70
194
 
195
+ /// @dev returns the number of registered tokens
71
196
  function tokens() external view returns (uint256) {
72
197
  return _token.length;
73
198
  }
74
199
 
75
- function getToken(uint256 idx) external view returns (IERC20Metadata token) {
76
- return IERC20Metadata(_token[idx]);
200
+ /// @dev returns the token info for the specified index position [0 .. tokens() - 1].
201
+ function getTokenInfo(uint256 idx) external view returns (TokenInfo memory tokenInfo) {
202
+ return _token[idx];
203
+ }
204
+
205
+ /// @dev returns the token info for the specified token coordinates.
206
+ function getTokenInfo(uint256 chainId, address token) external view returns (TokenInfo memory tokenInfo) {
207
+ return _tokenInfo[chainId][token];
208
+ }
209
+
210
+ /// @dev returns true iff the specified token has been registered for this TokenRegistry contract.
211
+ function isRegistered(uint256 chainId, address token) public view returns (bool) {
212
+ return _tokenInfo[chainId][token].chainId > 0;
213
+ }
214
+
215
+ /// @dev returns true iff both the token is active for the specfied version and the global token state is active
216
+ function isActive(uint256 chainId, address token, VersionPart majorVersion) external view returns (bool) {
217
+ if(!_tokenInfo[chainId][token].active) {
218
+ return false;
219
+ }
220
+
221
+ return _active[chainId][token][majorVersion];
77
222
  }
78
223
 
79
- function isRegistered(address token) external view returns (bool) {
80
- return _registered[token];
224
+ function getDipTokenAddress() external view returns (address) {
225
+ return address(_dipToken);
81
226
  }
82
227
 
83
- function isActive(address token, VersionPart majorVersion) external view returns (bool) {
84
- return _active[token][majorVersion];
228
+ //--- IRegistryLinked --------------------------------------------------//
229
+
230
+ /// @dev returns the dip token for this chain
231
+ function getRegistry() public view returns (IRegistry) {
232
+ return _registry;
85
233
  }
86
234
 
87
- /// @dev some sanity checks to prevent unintended registration
88
- function _registerToken(address token) internal {
235
+ //--- internal functions ------------------------------------------------//
236
+
237
+
238
+ /// @dev checks if provided token address refers to a smart contract that implements
239
+ /// erc20 functionality (via its non-optional functions)
240
+ function _verifyOnchainToken(address tokenAddress)
241
+ internal
242
+ virtual
243
+ view
244
+ returns (IERC20Metadata token)
245
+ {
246
+ token = IERC20Metadata(tokenAddress);
247
+ uint256 chainId = block.chainid;
89
248
 
90
249
  // MUST be contract
91
- if(token.code.length == 0) {
92
- revert NotContract(token);
250
+ if(tokenAddress.code.length == 0) {
251
+ revert ErrorTokenRegistryTokenNotContract(chainId, tokenAddress);
93
252
  }
94
253
 
95
- // MUST not be GIF registerable
96
- if(ERC165Checker.supportsInterface(token, type(IRegisterable).interfaceId)) {
97
- revert NotToken(token);
254
+ // MUST implement required erc20 view functions
255
+ if(!_implementsErc20Functions(token)) {
256
+ revert ErrorTokenRegistryTokenNotErc20(chainId, tokenAddress);
98
257
  }
258
+ }
99
259
 
100
- // MUST have decimals > 0
101
- IERC20Metadata erc20 = IERC20Metadata(token);
102
- if(erc20.decimals() == 0) {
103
- revert TokenDecimalsZero();
260
+
261
+ /// @dev checks availability of non-optional view functions
262
+ /// https://eips.ethereum.org/EIPS/eip-20#methods
263
+ function _implementsErc20Functions(IERC20Metadata token) internal view returns (bool implementsErc20Functions) {
264
+ try token.totalSupply() returns (uint256) {
265
+ // so far so goood
266
+ } catch {
267
+ return false;
268
+ }
269
+
270
+ try token.balanceOf(address(1)) returns (uint256) {
271
+ // so far so goood
272
+ } catch {
273
+ return false;
274
+ }
275
+
276
+ try token.allowance(address(1), address(2)) returns (uint256) {
277
+ // so far so goood
278
+ } catch {
279
+ return false;
104
280
  }
105
281
 
106
- _registered[token] = true;
107
- _token.push(token);
282
+ return true;
283
+ }
284
+
285
+ /// @dev some sanity checks to prevent unintended registration:
286
+ /// - token not yet registered
287
+ /// - chainId not zero
288
+ /// - token address not zero
289
+ function _registerToken(uint256 chainId, address token, uint8 decimals, string memory symbol) internal {
290
+
291
+ if (isRegistered(chainId, token)) {
292
+ revert ErrorTokenRegistryTokenAlreadyRegistered(chainId, token);
293
+ }
294
+
295
+ if(chainId == 0) {
296
+ revert ErrorTokenRegistryChainIdZero();
297
+ }
298
+
299
+ if(token == address(0)) {
300
+ revert ErrorTokenRegistryTokenAddressZero();
301
+ }
302
+
303
+ TokenInfo memory tokenInfo = TokenInfo({
304
+ chainId: chainId,
305
+ token: token,
306
+ decimals: decimals,
307
+ symbol: symbol,
308
+ active: true});
309
+
310
+ _tokenInfo[chainId][token] = tokenInfo;
311
+ _token.push(tokenInfo);
108
312
 
109
- emit LogRegistered(token, erc20.symbol(), erc20.decimals());
313
+ emit LogTokenRegistryTokenRegistered(chainId, token, decimals, symbol);
110
314
  }
111
315
  }