@merkl/api 0.10.240 → 0.10.241

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.
@@ -6,6 +6,6 @@ type ReturnType = {
6
6
  decimals: number;
7
7
  };
8
8
  };
9
- export declare function getOnlyUserBalance(chainId: number, userAddress: string, tokenAddresses: string[]): Promise<UncachedResult<ReturnType>>;
9
+ export declare function getOnlyUserBalance(chainId: number, userAddress: string, tokenAddresses: string[]): Promise<ReturnType>;
10
10
  export declare function getUserBalances(user: string, chainId: number, tokenAddresses?: string[]): Promise<UncachedResult<ReturnType>>;
11
11
  export {};
@@ -1,42 +1,43 @@
1
- import { Erc20__factory } from "@sdk";
1
+ import { ChainId, ChainInteractionService, Erc20__factory, EthOnZKSync_INTERFACE, NETWORK_LABELS, } from "@sdk";
2
2
  import { log } from "../../utils/logger";
3
3
  import { getTokensListWithCache } from "../getTokensList";
4
4
  export async function getOnlyUserBalance(chainId, userAddress, tokenAddresses) {
5
5
  const calls = [];
6
6
  const ERC20_Interface = Erc20__factory.createInterface();
7
7
  for (const tokenAddress of tokenAddresses) {
8
- calls.push({
9
- allowFailure: true,
10
- callData: ERC20_Interface.encodeFunctionData("balanceOf", [userAddress]),
11
- target: tokenAddress,
12
- });
8
+ if (chainId === ChainId.ZKSYNC && tokenAddress === "0x000000000000000000000000000000000000800A") {
9
+ calls.push({
10
+ allowFailure: true,
11
+ callData: EthOnZKSync_INTERFACE.encodeFunctionData("balanceOf", [userAddress]),
12
+ target: tokenAddress,
13
+ });
14
+ }
15
+ else {
16
+ calls.push({
17
+ allowFailure: true,
18
+ callData: ERC20_Interface.encodeFunctionData("balanceOf", [userAddress]),
19
+ target: tokenAddress,
20
+ });
21
+ }
13
22
  }
14
- return {
15
- cached: false,
16
- call: {
17
- callData: calls,
18
- handler: () => { },
19
- reducer: async (result) => {
20
- const res = {};
21
- for (let j = 0; j < tokenAddresses.length; j++) {
22
- const tokenAddress = tokenAddresses[j];
23
- let balance = "0";
24
- try {
25
- balance = ERC20_Interface.decodeFunctionResult("balanceOf", result[j])[0]?.toString();
26
- }
27
- catch (_error) {
28
- log.local(`❌ Failed to call balanceOf for ${tokenAddress} on ${chainId}`);
29
- }
30
- res[tokenAddress] = {
31
- balance: balance,
32
- decimals: 0,
33
- symbol: "",
34
- };
35
- }
36
- return res;
37
- },
38
- },
39
- };
23
+ const result = await ChainInteractionService(chainId).fetchState(calls);
24
+ const res = {};
25
+ for (let j = 0; j < tokenAddresses.length; j++) {
26
+ const tokenAddress = tokenAddresses[j];
27
+ let balance = "0";
28
+ try {
29
+ balance = ERC20_Interface.decodeFunctionResult("balanceOf", result[j].returnData)[0]?.toString();
30
+ }
31
+ catch (_error) {
32
+ log.local(`❌ Failed to call balanceOf for ${tokenAddress} on ${NETWORK_LABELS[chainId]}`);
33
+ }
34
+ res[tokenAddress] = {
35
+ balance: balance,
36
+ decimals: 0,
37
+ symbol: "",
38
+ };
39
+ }
40
+ return res;
40
41
  }
41
42
  export async function getUserBalances(user, chainId, tokenAddresses) {
42
43
  const tokens = (await getTokensListWithCache())?.[chainId];
@@ -1,6 +1,5 @@
1
1
  import { getTokensListWithCache } from "../../../libs/getTokensList";
2
2
  import { getOnlyUserBalance } from "../../../libs/tokens/balances";
3
- import { executeSimple } from "../../../utils/execute";
4
3
  import { log } from "../../../utils/logger";
5
4
  import { apiDbClient } from "../../../utils/prisma";
6
5
  import { Prisma } from "../../../../database/api/.generated";
@@ -22,7 +21,7 @@ export class TokenService {
22
21
  * Fetches balances of provided tokens
23
22
  */
24
23
  static async fetchBalances(chainId, userAddress, tokens) {
25
- const balances = await executeSimple(chainId, getOnlyUserBalance(chainId, userAddress, tokens.map(t => t.address)));
24
+ const balances = await getOnlyUserBalance(chainId, userAddress, tokens.map(t => t.address));
26
25
  const tokensWithBalances = tokens.map(t => {
27
26
  const balance = balances[t.address] ??
28
27
  balances[Object.keys(balances).find(a => a?.toLowerCase() === t.address?.toLowerCase()) ?? ""];