@audius/sdk 0.0.0

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 (278) hide show
  1. package/.eslintrc +38 -0
  2. package/.prettierrc.js +1 -0
  3. package/.python-version +1 -0
  4. package/Dockerfile +15 -0
  5. package/README.md +3 -0
  6. package/babel.config.js +3 -0
  7. package/data-contracts/ABIs/AdminUpgradeabilityProxy.json +132 -0
  8. package/data-contracts/ABIs/BaseAdminUpgradeabilityProxy.json +113 -0
  9. package/data-contracts/ABIs/BaseUpgradeabilityProxy.json +22 -0
  10. package/data-contracts/ABIs/DiscoveryProviderFactory.json +189 -0
  11. package/data-contracts/ABIs/DiscoveryProviderFactoryInterface.json +61 -0
  12. package/data-contracts/ABIs/DiscoveryProviderStorage.json +205 -0
  13. package/data-contracts/ABIs/DiscoveryProviderStorageInterface.json +65 -0
  14. package/data-contracts/ABIs/ECDSA.json +4 -0
  15. package/data-contracts/ABIs/IPLDBlacklistFactory.json +168 -0
  16. package/data-contracts/ABIs/Initializable.json +4 -0
  17. package/data-contracts/ABIs/Migrations.json +67 -0
  18. package/data-contracts/ABIs/OpenZeppelinUpgradesAddress.json +4 -0
  19. package/data-contracts/ABIs/Ownable.json +79 -0
  20. package/data-contracts/ABIs/PlaylistFactory.json +669 -0
  21. package/data-contracts/ABIs/PlaylistFactoryInterface.json +42 -0
  22. package/data-contracts/ABIs/PlaylistStorage.json +250 -0
  23. package/data-contracts/ABIs/PlaylistStorageInterface.json +129 -0
  24. package/data-contracts/ABIs/Proxy.json +10 -0
  25. package/data-contracts/ABIs/Registry.json +240 -0
  26. package/data-contracts/ABIs/RegistryContract.json +102 -0
  27. package/data-contracts/ABIs/RegistryContractInterface.json +28 -0
  28. package/data-contracts/ABIs/RegistryInterface.json +66 -0
  29. package/data-contracts/ABIs/SigningLogic.json +43 -0
  30. package/data-contracts/ABIs/SigningLogicInitializable.json +46 -0
  31. package/data-contracts/ABIs/SocialFeatureFactory.json +460 -0
  32. package/data-contracts/ABIs/SocialFeatureStorage.json +225 -0
  33. package/data-contracts/ABIs/SocialFeatureStorageInterface.json +123 -0
  34. package/data-contracts/ABIs/TestContract.json +135 -0
  35. package/data-contracts/ABIs/TestContractInterface.json +19 -0
  36. package/data-contracts/ABIs/TestContractWithStorage.json +165 -0
  37. package/data-contracts/ABIs/TestContractWithStorageInterface.json +24 -0
  38. package/data-contracts/ABIs/TestStorage.json +144 -0
  39. package/data-contracts/ABIs/TestStorageInterface.json +42 -0
  40. package/data-contracts/ABIs/TestUserReplicaSetManager.json +432 -0
  41. package/data-contracts/ABIs/TrackFactory.json +391 -0
  42. package/data-contracts/ABIs/TrackFactoryInterface.json +73 -0
  43. package/data-contracts/ABIs/TrackStorage.json +223 -0
  44. package/data-contracts/ABIs/TrackStorageInterface.json +121 -0
  45. package/data-contracts/ABIs/UpgradeabilityProxy.json +37 -0
  46. package/data-contracts/ABIs/UserFactory.json +657 -0
  47. package/data-contracts/ABIs/UserFactoryInterface.json +65 -0
  48. package/data-contracts/ABIs/UserLibraryFactory.json +334 -0
  49. package/data-contracts/ABIs/UserReplicaSetManager.json +418 -0
  50. package/data-contracts/ABIs/UserStorage.json +233 -0
  51. package/data-contracts/ABIs/UserStorageInterface.json +93 -0
  52. package/data-contracts/signatureSchemas.ts +1236 -0
  53. package/dist/core.d.ts +446 -0
  54. package/dist/core.js +769 -0
  55. package/dist/core.js.map +1 -0
  56. package/dist/index.d.ts +689 -0
  57. package/dist/index.js +72850 -0
  58. package/dist/index.js.map +1 -0
  59. package/eth-contracts/ABIs/Address.json +4 -0
  60. package/eth-contracts/ABIs/AudiusAdminUpgradeabilityProxy.json +105 -0
  61. package/eth-contracts/ABIs/AudiusClaimDistributor.json +4968 -0
  62. package/eth-contracts/ABIs/AudiusToken.json +724 -0
  63. package/eth-contracts/ABIs/BaseUpgradeabilityProxy.json +23 -0
  64. package/eth-contracts/ABIs/Checkpointing.json +4 -0
  65. package/eth-contracts/ABIs/ClaimsManager.json +539 -0
  66. package/eth-contracts/ABIs/Context.json +11 -0
  67. package/eth-contracts/ABIs/DelegateManager.json +989 -0
  68. package/eth-contracts/ABIs/DelegateManagerV2.json +1049 -0
  69. package/eth-contracts/ABIs/DelegateManagerV2Bad.json +1049 -0
  70. package/eth-contracts/ABIs/ERC20.json +252 -0
  71. package/eth-contracts/ABIs/ERC20Burnable.json +287 -0
  72. package/eth-contracts/ABIs/ERC20Detailed.json +270 -0
  73. package/eth-contracts/ABIs/ERC20Mintable.json +364 -0
  74. package/eth-contracts/ABIs/ERC20Pausable.json +397 -0
  75. package/eth-contracts/ABIs/EthRewardsManager.json +174 -0
  76. package/eth-contracts/ABIs/Governance.json +938 -0
  77. package/eth-contracts/ABIs/GovernanceUpgraded.json +953 -0
  78. package/eth-contracts/ABIs/GovernanceV2.json +938 -0
  79. package/eth-contracts/ABIs/IERC20.json +200 -0
  80. package/eth-contracts/ABIs/Initializable.json +4 -0
  81. package/eth-contracts/ABIs/InitializableV2.json +14 -0
  82. package/eth-contracts/ABIs/Migrations.json +71 -0
  83. package/eth-contracts/ABIs/MinterRole.json +91 -0
  84. package/eth-contracts/ABIs/MockAccount.json +62 -0
  85. package/eth-contracts/ABIs/MockDelegateManager.json +55 -0
  86. package/eth-contracts/ABIs/MockStakingCaller.json +259 -0
  87. package/eth-contracts/ABIs/MockWormhole.json +106 -0
  88. package/eth-contracts/ABIs/OpenZeppelinUpgradesAddress.json +4 -0
  89. package/eth-contracts/ABIs/Ownable.json +93 -0
  90. package/eth-contracts/ABIs/Pausable.json +150 -0
  91. package/eth-contracts/ABIs/PauserRole.json +91 -0
  92. package/eth-contracts/ABIs/Proxy.json +10 -0
  93. package/eth-contracts/ABIs/Registry.json +288 -0
  94. package/eth-contracts/ABIs/Roles.json +4 -0
  95. package/eth-contracts/ABIs/SafeERC20.json +4 -0
  96. package/eth-contracts/ABIs/SafeMath.json +4 -0
  97. package/eth-contracts/ABIs/ServiceProviderFactory.json +1153 -0
  98. package/eth-contracts/ABIs/ServiceTypeManager.json +337 -0
  99. package/eth-contracts/ABIs/Staking.json +555 -0
  100. package/eth-contracts/ABIs/StakingUpgraded.json +570 -0
  101. package/eth-contracts/ABIs/TestContract.json +44 -0
  102. package/eth-contracts/ABIs/TrustedNotifierManager.json +265 -0
  103. package/eth-contracts/ABIs/Uint256Helpers.json +4 -0
  104. package/eth-contracts/ABIs/UpgradeabilityProxy.json +40 -0
  105. package/eth-contracts/ABIs/Wormhole.json +45 -0
  106. package/eth-contracts/ABIs/WormholeClient.json +155 -0
  107. package/examples/file.mp3 +0 -0
  108. package/examples/initAudiusLibs.js +86 -0
  109. package/examples/initializeVersions.js +95 -0
  110. package/examples/pic.jpg +0 -0
  111. package/initScripts/configureLocalDiscProv.js +167 -0
  112. package/initScripts/helpers/claim.js +43 -0
  113. package/initScripts/helpers/distributeTokens.js +24 -0
  114. package/initScripts/helpers/spRegistration.js +138 -0
  115. package/initScripts/helpers/utils.js +34 -0
  116. package/initScripts/helpers/version.js +93 -0
  117. package/initScripts/local.js +617 -0
  118. package/initScripts/mainnet.js +131 -0
  119. package/initScripts/manageProdRelayerWallets.js +191 -0
  120. package/package.json +125 -0
  121. package/rollup.config.js +164 -0
  122. package/scripts/AudiusClaimDistributor.json +4968 -0
  123. package/scripts/Wormhole.json +155 -0
  124. package/scripts/addCIDToIpldBlacklist.js +124 -0
  125. package/scripts/circleci-test.sh +53 -0
  126. package/scripts/communityRewards/transferCommunityRewardsToSolana.js +222 -0
  127. package/scripts/ipfs.sh +58 -0
  128. package/scripts/migrate_contracts.sh +25 -0
  129. package/scripts/reset.sh +65 -0
  130. package/scripts/test.sh +77 -0
  131. package/src/api/account.js +670 -0
  132. package/src/api/base.js +122 -0
  133. package/src/api/file.js +168 -0
  134. package/src/api/playlist.js +328 -0
  135. package/src/api/rewards.d.ts +4 -0
  136. package/src/api/rewards.js +682 -0
  137. package/src/api/serviceProvider.js +154 -0
  138. package/src/api/track.js +604 -0
  139. package/src/api/user.js +888 -0
  140. package/src/api/user.test.js +172 -0
  141. package/src/constants.ts +7 -0
  142. package/src/core.ts +3 -0
  143. package/src/index.js +6 -0
  144. package/src/libs.d.ts +3 -0
  145. package/src/libs.js +619 -0
  146. package/src/sanityChecks/addSecondaries.js +40 -0
  147. package/src/sanityChecks/assignReplicaSetIfNecessary.js +10 -0
  148. package/src/sanityChecks/index.d.ts +9 -0
  149. package/src/sanityChecks/index.js +31 -0
  150. package/src/sanityChecks/isCreator.js +73 -0
  151. package/src/sanityChecks/needsRecoveryEmail.js +20 -0
  152. package/src/sanityChecks/rolloverNodes.js +74 -0
  153. package/src/sanityChecks/sanitizeNodes.js +24 -0
  154. package/src/sanityChecks/syncNodes.js +28 -0
  155. package/src/sdk/constants.ts +10 -0
  156. package/src/sdk/index.ts +1 -0
  157. package/src/sdk/oauth/Oauth.ts +265 -0
  158. package/src/sdk/oauth/index.ts +1 -0
  159. package/src/sdk/sdk.ts +102 -0
  160. package/src/service-selection/ServiceSelection.test.ts +320 -0
  161. package/src/service-selection/ServiceSelection.ts +460 -0
  162. package/src/service-selection/constants.ts +14 -0
  163. package/src/service-selection/index.ts +1 -0
  164. package/src/services/ABIDecoder/AudiusABIDecoder.ts +71 -0
  165. package/src/services/ABIDecoder/index.ts +1 -0
  166. package/src/services/comstock/Comstock.ts +39 -0
  167. package/src/services/comstock/index.ts +1 -0
  168. package/src/services/contracts/ContractClient.ts +227 -0
  169. package/src/services/contracts/GovernedContractClient.ts +53 -0
  170. package/src/services/contracts/ProviderSelection.ts +42 -0
  171. package/src/services/creatorNode/CreatorNode.ts +1065 -0
  172. package/src/services/creatorNode/CreatorNodeSelection.test.ts +997 -0
  173. package/src/services/creatorNode/CreatorNodeSelection.ts +488 -0
  174. package/src/services/creatorNode/constants.ts +10 -0
  175. package/src/services/creatorNode/index.ts +2 -0
  176. package/src/services/dataContracts/AudiusContracts.ts +234 -0
  177. package/src/services/dataContracts/IPLDBlacklistFactoryClient.ts +73 -0
  178. package/src/services/dataContracts/PlaylistFactoryClient.ts +370 -0
  179. package/src/services/dataContracts/RegistryClient.ts +95 -0
  180. package/src/services/dataContracts/SocialFeatureFactoryClient.ts +196 -0
  181. package/src/services/dataContracts/TrackFactoryClient.ts +131 -0
  182. package/src/services/dataContracts/UserFactoryClient.ts +351 -0
  183. package/src/services/dataContracts/UserLibraryFactoryClient.ts +115 -0
  184. package/src/services/dataContracts/UserReplicaSetManagerClient.ts +206 -0
  185. package/src/services/dataContracts/index.ts +1 -0
  186. package/src/services/discoveryProvider/DiscoveryProvider.ts +1168 -0
  187. package/src/services/discoveryProvider/DiscoveryProviderSelection.test.ts +536 -0
  188. package/src/services/discoveryProvider/DiscoveryProviderSelection.ts +383 -0
  189. package/src/services/discoveryProvider/constants.ts +13 -0
  190. package/src/services/discoveryProvider/index.ts +1 -0
  191. package/src/services/discoveryProvider/requests.ts +629 -0
  192. package/src/services/ethContracts/AudiusTokenClient.ts +163 -0
  193. package/src/services/ethContracts/ClaimDistributionClient.ts +45 -0
  194. package/src/services/ethContracts/ClaimsManagerClient.ts +102 -0
  195. package/src/services/ethContracts/DelegateManagerClient.ts +480 -0
  196. package/src/services/ethContracts/EthContracts.ts +359 -0
  197. package/src/services/ethContracts/EthRewardsManagerClient.ts +33 -0
  198. package/src/services/ethContracts/GovernanceClient.ts +451 -0
  199. package/src/services/ethContracts/RegistryClient.ts +33 -0
  200. package/src/services/ethContracts/ServiceProviderFactoryClient.ts +691 -0
  201. package/src/services/ethContracts/ServiceTypeManagerClient.ts +112 -0
  202. package/src/services/ethContracts/StakingProxyClient.ts +97 -0
  203. package/src/services/ethContracts/TrustedNotifierManagerClient.ts +101 -0
  204. package/src/services/ethContracts/WormholeClient.ts +97 -0
  205. package/src/services/ethContracts/index.ts +1 -0
  206. package/src/services/ethWeb3Manager/EthWeb3Manager.ts +239 -0
  207. package/src/services/ethWeb3Manager/index.ts +1 -0
  208. package/src/services/hedgehog/Hedgehog.ts +96 -0
  209. package/src/services/hedgehog/index.ts +1 -0
  210. package/src/services/identity/IdentityService.ts +551 -0
  211. package/src/services/identity/index.ts +1 -0
  212. package/src/services/identity/requests.ts +65 -0
  213. package/src/services/schemaValidator/SchemaValidator.ts +105 -0
  214. package/src/services/schemaValidator/index.ts +1 -0
  215. package/src/services/schemaValidator/schemas/trackSchema.json +267 -0
  216. package/src/services/schemaValidator/schemas/userSchema.json +230 -0
  217. package/src/services/solanaAudiusData/errors.ts +20 -0
  218. package/src/services/solanaAudiusData/index.ts +1189 -0
  219. package/src/services/solanaWeb3Manager/errors.js +101 -0
  220. package/src/services/solanaWeb3Manager/index.d.ts +46 -0
  221. package/src/services/solanaWeb3Manager/index.js +655 -0
  222. package/src/services/solanaWeb3Manager/padBNToUint8Array.ts +7 -0
  223. package/src/services/solanaWeb3Manager/rewards.js +941 -0
  224. package/src/services/solanaWeb3Manager/rewardsAttester.ts +1093 -0
  225. package/src/services/solanaWeb3Manager/tokenAccount.js +149 -0
  226. package/src/services/solanaWeb3Manager/transactionHandler.js +345 -0
  227. package/src/services/solanaWeb3Manager/transfer.js +272 -0
  228. package/src/services/solanaWeb3Manager/userBank.js +160 -0
  229. package/src/services/solanaWeb3Manager/utils.d.ts +31 -0
  230. package/src/services/solanaWeb3Manager/utils.js +163 -0
  231. package/src/services/solanaWeb3Manager/wAudio.js +28 -0
  232. package/src/services/solanaWeb3Manager/wAudio.test.js +30 -0
  233. package/src/services/web3Manager/Web3Config.ts +14 -0
  234. package/src/services/web3Manager/Web3Manager.ts +360 -0
  235. package/src/services/web3Manager/XMLHttpRequest.ts +11 -0
  236. package/src/services/web3Manager/index.ts +2 -0
  237. package/src/services/wormhole/index.js +424 -0
  238. package/src/types.ts +8 -0
  239. package/src/userStateManager.ts +53 -0
  240. package/src/utils/apiSigning.ts +51 -0
  241. package/src/utils/captcha.ts +97 -0
  242. package/src/utils/estimateGas.ts +64 -0
  243. package/src/utils/fileHasher.ts +278 -0
  244. package/src/utils/importContractABI.d.ts +9 -0
  245. package/src/utils/importContractABI.js +19 -0
  246. package/src/utils/index.ts +11 -0
  247. package/src/utils/multiProvider.ts +72 -0
  248. package/src/utils/network.test.ts +127 -0
  249. package/src/utils/network.ts +308 -0
  250. package/src/utils/promiseFight.test.ts +87 -0
  251. package/src/utils/promiseFight.ts +36 -0
  252. package/src/utils/signatures.ts +139 -0
  253. package/src/utils/types.ts +34 -0
  254. package/src/utils/utils.test.ts +36 -0
  255. package/src/utils/utils.ts +235 -0
  256. package/src/utils/uuid.ts +14 -0
  257. package/src/web3.d.ts +9 -0
  258. package/src/web3.js +8 -0
  259. package/tests/assets/static_image.png +0 -0
  260. package/tests/assets/static_text.txt +1 -0
  261. package/tests/audiusTokenClientTest.js +37 -0
  262. package/tests/creatorNodeTest.js +19 -0
  263. package/tests/fileHasherTest.js +125 -0
  264. package/tests/governanceTest.js +382 -0
  265. package/tests/helpers.js +105 -0
  266. package/tests/index.js +14 -0
  267. package/tests/playlistClientTest.js +157 -0
  268. package/tests/providerSelectionTest.js +241 -0
  269. package/tests/registryClientTest.js +19 -0
  270. package/tests/rewardsAttesterTest.js +373 -0
  271. package/tests/serviceTypeManagerClientTest.js +33 -0
  272. package/tests/socialFeatureClientTest.js +79 -0
  273. package/tests/stakingTest.js +302 -0
  274. package/tests/trackClientTest.js +86 -0
  275. package/tests/userClientTest.js +121 -0
  276. package/tsconfig.json +10 -0
  277. package/types/@audius-hedgehog/index.d.ts +39 -0
  278. package/types/abi-decoder/index.d.ts +41 -0
@@ -0,0 +1,359 @@
1
+ import semver from 'semver'
2
+ import { AudiusTokenClient } from './AudiusTokenClient'
3
+ import { RegistryClient } from './RegistryClient'
4
+ import { GovernanceClient } from './GovernanceClient'
5
+ import { ServiceTypeManagerClient } from './ServiceTypeManagerClient'
6
+ import { ServiceProviderFactoryClient } from './ServiceProviderFactoryClient'
7
+ import { StakingProxyClient } from './StakingProxyClient'
8
+ import { DelegateManagerClient } from './DelegateManagerClient'
9
+ import { ClaimsManagerClient } from './ClaimsManagerClient'
10
+ import { ClaimDistributionClient } from './ClaimDistributionClient'
11
+ import { WormholeClient } from './WormholeClient'
12
+ import { EthRewardsManagerClient } from './EthRewardsManagerClient'
13
+ import { TrustedNotifierManagerClient } from './TrustedNotifierManagerClient'
14
+ import { Logger, Utils } from '../../utils'
15
+ import type { EthWeb3Manager } from '../ethWeb3Manager'
16
+ import type { ContractClient } from '../contracts/ContractClient'
17
+
18
+ const AudiusTokenABI = Utils.importEthContractABI('AudiusToken.json').abi
19
+ const RegistryABI = Utils.importEthContractABI('Registry.json').abi
20
+ const GovernanceABI = Utils.importEthContractABI('Governance.json').abi
21
+ const ServiceTypeManagerABI = Utils.importEthContractABI(
22
+ 'ServiceTypeManager.json'
23
+ ).abi
24
+ const ServiceProviderFactoryABI = Utils.importEthContractABI(
25
+ 'ServiceProviderFactory.json'
26
+ ).abi
27
+ const StakingABI = Utils.importEthContractABI('Staking.json').abi
28
+ const DelegateManagerABI = Utils.importEthContractABI(
29
+ 'DelegateManagerV2.json'
30
+ ).abi
31
+ const ClaimsManagerABI = Utils.importEthContractABI('ClaimsManager.json').abi
32
+ const ClaimDistributionABI = Utils.importEthContractABI(
33
+ 'AudiusClaimDistributor.json'
34
+ ).abi
35
+ const WormholeClientABI = Utils.importEthContractABI('WormholeClient.json').abi
36
+ const EthRewardsManagerABI = Utils.importEthContractABI(
37
+ 'EthRewardsManager.json'
38
+ ).abi
39
+ const TrustedNotifierManagerABI = Utils.importEthContractABI(
40
+ 'TrustedNotifierManager.json'
41
+ ).abi
42
+
43
+ const GovernanceRegistryKey = 'Governance'
44
+ const ServiceTypeManagerProxyKey = 'ServiceTypeManagerProxy'
45
+ const ServiceProviderFactoryRegistryKey = 'ServiceProviderFactory'
46
+ const StakingProxyKey = 'StakingProxy'
47
+ const DelegateManagerRegistryKey = 'DelegateManager'
48
+ const ClaimsManagerProxyKey = 'ClaimsManagerProxy'
49
+ const ClaimDistributionRegistryKey = 'ClaimDistribution'
50
+ const EthRewardsManagerProxyKey = 'EthRewardsManagerProxy'
51
+ const TrustedNotifierManagerProxyKey = 'TrustedNotifierManagerProxy'
52
+
53
+ const TWO_MINUTES = 2 * 60 * 1000
54
+
55
+ export const serviceType = Object.freeze({
56
+ DISCOVERY_PROVIDER: 'discovery-node',
57
+ CREATOR_NODE: 'content-node'
58
+ })
59
+ const serviceTypeList = Object.values(serviceType)
60
+
61
+ export type EthContractsConfig = {
62
+ ethWeb3Manager: EthWeb3Manager
63
+ tokenContractAddress: string
64
+ registryAddress: string
65
+ claimDistributionContractAddress: string
66
+ wormholeContractAddress: string
67
+ isServer?: boolean
68
+ logger?: Logger
69
+ isDebug?: boolean
70
+ }
71
+
72
+ export class EthContracts {
73
+ ethWeb3Manager: EthWeb3Manager
74
+ tokenContractAddress: string
75
+ claimDistributionContractAddress: string
76
+ wormholeContractAddress: string
77
+ registryAddress: string
78
+ isServer: boolean
79
+ logger: Logger
80
+ isDebug: boolean
81
+ expectedServiceVersions: null | string[]
82
+ AudiusTokenClient: AudiusTokenClient
83
+ RegistryClient: RegistryClient
84
+ StakingProxyClient: StakingProxyClient
85
+ GovernanceClient: GovernanceClient
86
+ ClaimsManagerClient: ClaimsManagerClient
87
+ EthRewardsManagerClient: EthRewardsManagerClient
88
+ ServiceTypeManagerClient: ServiceTypeManagerClient
89
+ ServiceProviderFactoryClient: ServiceProviderFactoryClient
90
+ DelegateManagerClient: DelegateManagerClient
91
+ ClaimDistributionClient: ClaimDistributionClient | undefined
92
+ WormholeClient: WormholeClient
93
+ TrustedNotifierManagerClient: TrustedNotifierManagerClient
94
+ contractClients: ContractClient[]
95
+ _regressedMode: boolean
96
+ contracts: Record<string, string> | undefined
97
+ contractAddresses: Record<string, string> | undefined
98
+
99
+ constructor({
100
+ ethWeb3Manager,
101
+ tokenContractAddress,
102
+ registryAddress,
103
+ claimDistributionContractAddress,
104
+ wormholeContractAddress,
105
+ isServer = false,
106
+ logger = console,
107
+ isDebug = false
108
+ }: EthContractsConfig) {
109
+ this.ethWeb3Manager = ethWeb3Manager
110
+ this.tokenContractAddress = tokenContractAddress
111
+ this.claimDistributionContractAddress = claimDistributionContractAddress
112
+ this.wormholeContractAddress = wormholeContractAddress
113
+ this.registryAddress = registryAddress
114
+ this.isServer = isServer
115
+ this.logger = logger
116
+ this.isDebug = isDebug
117
+ this.expectedServiceVersions = null
118
+
119
+ this.AudiusTokenClient = new AudiusTokenClient(
120
+ this.ethWeb3Manager,
121
+ AudiusTokenABI,
122
+ this.tokenContractAddress
123
+ )
124
+ this.RegistryClient = new RegistryClient(
125
+ this.ethWeb3Manager,
126
+ RegistryABI,
127
+ this.registryAddress
128
+ )
129
+ this.getRegistryAddressForContract =
130
+ this.getRegistryAddressForContract.bind(this)
131
+
132
+ this.StakingProxyClient = new StakingProxyClient(
133
+ this.ethWeb3Manager,
134
+ StakingABI,
135
+ StakingProxyKey,
136
+ this.getRegistryAddressForContract,
137
+ this.AudiusTokenClient,
138
+ this.logger
139
+ )
140
+
141
+ this.GovernanceClient = new GovernanceClient(
142
+ this.ethWeb3Manager,
143
+ GovernanceABI,
144
+ GovernanceRegistryKey,
145
+ this.getRegistryAddressForContract,
146
+ this.AudiusTokenClient,
147
+ this.StakingProxyClient,
148
+ this.logger
149
+ )
150
+
151
+ this.ClaimsManagerClient = new ClaimsManagerClient(
152
+ this.ethWeb3Manager,
153
+ ClaimsManagerABI,
154
+ ClaimsManagerProxyKey,
155
+ this.getRegistryAddressForContract,
156
+ this.logger
157
+ )
158
+
159
+ this.EthRewardsManagerClient = new EthRewardsManagerClient(
160
+ this.ethWeb3Manager,
161
+ EthRewardsManagerABI,
162
+ EthRewardsManagerProxyKey,
163
+ this.getRegistryAddressForContract,
164
+ this.logger
165
+ )
166
+
167
+ this.ServiceTypeManagerClient = new ServiceTypeManagerClient(
168
+ this.ethWeb3Manager,
169
+ ServiceTypeManagerABI,
170
+ ServiceTypeManagerProxyKey,
171
+ this.getRegistryAddressForContract,
172
+ this.GovernanceClient,
173
+ this.logger
174
+ )
175
+
176
+ this.ServiceProviderFactoryClient = new ServiceProviderFactoryClient(
177
+ this.ethWeb3Manager,
178
+ ServiceProviderFactoryABI,
179
+ ServiceProviderFactoryRegistryKey,
180
+ this.getRegistryAddressForContract,
181
+ this.AudiusTokenClient,
182
+ this.StakingProxyClient,
183
+ this.GovernanceClient,
184
+ this.logger,
185
+ this.isDebug
186
+ )
187
+
188
+ this.DelegateManagerClient = new DelegateManagerClient(
189
+ this.ethWeb3Manager,
190
+ DelegateManagerABI,
191
+ DelegateManagerRegistryKey,
192
+ this.getRegistryAddressForContract,
193
+ this.AudiusTokenClient,
194
+ this.StakingProxyClient,
195
+ this.GovernanceClient,
196
+ this.logger
197
+ )
198
+
199
+ if (this.claimDistributionContractAddress) {
200
+ this.ClaimDistributionClient = new ClaimDistributionClient(
201
+ this.ethWeb3Manager,
202
+ ClaimDistributionABI,
203
+ ClaimDistributionRegistryKey,
204
+ this.getRegistryAddressForContract,
205
+ this.logger,
206
+ this.claimDistributionContractAddress
207
+ )
208
+ }
209
+
210
+ this.WormholeClient = new WormholeClient(
211
+ this.ethWeb3Manager,
212
+ WormholeClientABI,
213
+ this.wormholeContractAddress,
214
+ this.AudiusTokenClient
215
+ )
216
+
217
+ this.TrustedNotifierManagerClient = new TrustedNotifierManagerClient(
218
+ this.ethWeb3Manager,
219
+ TrustedNotifierManagerABI,
220
+ TrustedNotifierManagerProxyKey,
221
+ this.getRegistryAddressForContract,
222
+ this.GovernanceClient,
223
+ this.logger
224
+ )
225
+
226
+ this.contractClients = [
227
+ this.ServiceTypeManagerClient,
228
+ this.StakingProxyClient,
229
+ this.ServiceProviderFactoryClient
230
+ ]
231
+
232
+ // Whether or not we are running in `regressed` mode, meaning we were
233
+ // unable to select a discovery provider that was up-to-date. Clients may
234
+ // want to consider blocking writes.
235
+ this._regressedMode = false
236
+ }
237
+
238
+ async init() {
239
+ if (
240
+ !this.ethWeb3Manager ||
241
+ !this.tokenContractAddress ||
242
+ !this.registryAddress
243
+ )
244
+ throw new Error('Failed to initialize EthContracts')
245
+
246
+ if (this.isServer) {
247
+ await Promise.all(
248
+ this.contractClients.map(async (client) => await client.init())
249
+ )
250
+ }
251
+ }
252
+
253
+ /**
254
+ * Estabilishes that connection to discovery providers has regressed
255
+ */
256
+ enterRegressedMode() {
257
+ console.info('Entering regressed mode')
258
+ this._regressedMode = true
259
+ setTimeout(() => {
260
+ console.info('Leaving regressed mode')
261
+ this._regressedMode = false
262
+ }, TWO_MINUTES)
263
+ }
264
+
265
+ isInRegressedMode() {
266
+ return this._regressedMode
267
+ }
268
+
269
+ async getRegistryAddressForContract(contractName: string) {
270
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names
271
+ this.contracts = this.contracts ?? { [this.registryAddress]: 'registry' }
272
+ this.contractAddresses = this.contractAddresses ?? {
273
+ registry: this.registryAddress
274
+ }
275
+ if (!this.contractAddresses[contractName]) {
276
+ const address = await this.RegistryClient.getContract(contractName)
277
+ this.contracts[address] = contractName
278
+ this.contractAddresses[contractName] = address
279
+ }
280
+
281
+ return this.contractAddresses[contractName] as string
282
+ }
283
+
284
+ async getCurrentVersion(serviceType: string) {
285
+ try {
286
+ const version = await this.ServiceTypeManagerClient.getCurrentVersion(
287
+ serviceType
288
+ )
289
+ return version
290
+ } catch (e) {
291
+ console.log(`Error retrieving version for ${serviceType}`)
292
+ return ''
293
+ }
294
+ }
295
+
296
+ /*
297
+ * Determine the latest version for deployed services such as discovery provider and cache
298
+ */
299
+ async getExpectedServiceVersions() {
300
+ const versions = await Promise.all(
301
+ serviceTypeList.map(
302
+ async (serviceType) => await this.getCurrentVersion(serviceType)
303
+ )
304
+ )
305
+ const expectedVersions = serviceTypeList.reduce<
306
+ Record<string, string | null | undefined>
307
+ >((map, serviceType, i) => {
308
+ if (versions[i]) {
309
+ map[serviceType] = versions[i]
310
+ }
311
+ return map
312
+ }, {})
313
+ return expectedVersions
314
+ }
315
+
316
+ /**
317
+ * Determine whether major and minor versions match for two version strings
318
+ * Version string 2 must have equivalent major/minor versions and a patch >= version1
319
+ * @param version1 string 1
320
+ * @param version2 string 2
321
+ */
322
+ isValidSPVersion(version1: string, version2: string) {
323
+ return (
324
+ semver.major(version1) === semver.major(version2) &&
325
+ semver.minor(version1) === semver.minor(version2) &&
326
+ semver.patch(version2) >= semver.patch(version1)
327
+ )
328
+ }
329
+
330
+ /**
331
+ * Determines whether the major and minor versions are equal
332
+ * @param version1 string 1
333
+ * @param version2 string 2
334
+ */
335
+ hasSameMajorAndMinorVersion(version1: string, version2: string) {
336
+ return (
337
+ semver.major(version1) === semver.major(version2) &&
338
+ semver.minor(version1) === semver.minor(version2)
339
+ )
340
+ }
341
+
342
+ async getServiceProviderList(spType: string) {
343
+ return await this.ServiceProviderFactoryClient.getServiceProviderList(
344
+ spType
345
+ )
346
+ }
347
+
348
+ async getNumberOfVersions(spType: string) {
349
+ return await this.ServiceTypeManagerClient.getNumberOfVersions(spType)
350
+ }
351
+
352
+ async getVersion(spType: string, queryIndex: number) {
353
+ return await this.ServiceTypeManagerClient.getVersion(spType, queryIndex)
354
+ }
355
+
356
+ async getServiceTypeInfo(spType: string) {
357
+ return await this.ServiceTypeManagerClient.getServiceTypeInfo(spType)
358
+ }
359
+ }
@@ -0,0 +1,33 @@
1
+ import { ContractClient } from '../contracts/ContractClient'
2
+
3
+ export class EthRewardsManagerClient extends ContractClient {
4
+ /* ------- GETTERS ------- */
5
+
6
+ // Get the token used by the contract
7
+ async token() {
8
+ const method = await this.getMethod('token')
9
+ const info = await method.call()
10
+ return info
11
+ }
12
+
13
+ // Get the Governance address
14
+ async getGovernanceAddress() {
15
+ const method = await this.getMethod('getGovernanceAddress')
16
+ const info = await method.call()
17
+ return info
18
+ }
19
+
20
+ // Get the recipient address
21
+ async getRecipientAddress() {
22
+ const method = await this.getMethod('getRecipientAddress')
23
+ const info = await method.call()
24
+ return info
25
+ }
26
+
27
+ // Get the anti abuse oracle addresses
28
+ async getAntiAbuseOracleAddresses() {
29
+ const method = await this.getMethod('getAntiAbuseOracleAddresses')
30
+ const info = await method.call()
31
+ return info
32
+ }
33
+ }