@lifi/sdk-provider-ethereum 4.0.0-beta.4 → 4.0.0-beta.6

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.
@@ -35,9 +35,14 @@ const getEVMBalanceMulticall = async (client, tokens, walletAddress, multicallAd
35
35
  })]);
36
36
  if (!results.length) return [];
37
37
  return tokens.map((token, i) => {
38
+ const result = results[i];
39
+ if (result.status !== "success") return {
40
+ ...token,
41
+ blockNumber
42
+ };
38
43
  return {
39
44
  ...token,
40
- amount: results[i].result,
45
+ amount: result.result,
41
46
  blockNumber
42
47
  };
43
48
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getEthereumBalance.js","names":["getMulticallAddress","getPublicClient","isZeroAddress","getEthBalanceAbi","balanceOfAbi"],"sources":["../../../src/actions/getEthereumBalance.ts"],"sourcesContent":["import type { SDKClient, Token, TokenAmount } from '@lifi/sdk'\nimport type { Address, Client } from 'viem'\nimport {\n getBalance,\n getBlockNumber,\n multicall,\n readContract,\n} from 'viem/actions'\nimport { getPublicClient } from '../client/publicClient.js'\nimport { balanceOfAbi, getEthBalanceAbi } from '../utils/abi.js'\nimport { isZeroAddress } from '../utils/isZeroAddress.js'\nimport { getMulticallAddress } from './getMulticallAddress.js'\n\nexport const getEthereumBalance = async (\n client: SDKClient,\n walletAddress: Address,\n tokens: Token[]\n): Promise<TokenAmount[]> => {\n if (tokens.length === 0) {\n return []\n }\n const { chainId } = tokens[0]\n for (const token of tokens) {\n if (token.chainId !== chainId) {\n console.warn('Requested tokens have to be on the same chain.')\n }\n }\n\n const multicallAddress = await getMulticallAddress(client, chainId)\n\n const viemClient = await getPublicClient(client, chainId)\n if (multicallAddress && tokens.length > 1) {\n return getEVMBalanceMulticall(\n viemClient,\n tokens,\n walletAddress,\n multicallAddress\n )\n }\n return getEthereumBalanceDefault(viemClient, tokens, walletAddress)\n}\n\nconst getEVMBalanceMulticall = async (\n client: Client,\n tokens: Token[],\n walletAddress: string,\n multicallAddress: string\n): Promise<TokenAmount[]> => {\n const contracts = tokens.map((token) => {\n if (isZeroAddress(token.address)) {\n return {\n address: multicallAddress as Address,\n abi: getEthBalanceAbi,\n functionName: 'getEthBalance',\n args: [walletAddress],\n }\n }\n return {\n address: token.address as Address,\n abi: balanceOfAbi,\n functionName: 'balanceOf',\n args: [walletAddress],\n }\n })\n\n const [blockNumber, results] = await Promise.all([\n getBlockNumber(client),\n multicall(client, {\n contracts,\n multicallAddress: multicallAddress as Address,\n }),\n ])\n\n if (!results.length) {\n return []\n }\n\n return tokens.map((token, i: number) => {\n return {\n ...token,\n amount: results[i].result as bigint,\n blockNumber,\n }\n })\n}\n\nconst getEthereumBalanceDefault = async (\n client: Client,\n tokens: Token[],\n walletAddress: Address\n): Promise<TokenAmount[]> => {\n const queue: Promise<bigint>[] = tokens.map((token) => {\n if (isZeroAddress(token.address)) {\n return getBalance(client, {\n address: walletAddress as Address,\n })\n }\n return readContract(client, {\n address: token.address as Address,\n abi: balanceOfAbi,\n functionName: 'balanceOf',\n args: [walletAddress],\n }) as Promise<bigint>\n })\n\n const [blockNumber, results] = await Promise.all([\n getBlockNumber(client),\n Promise.allSettled(queue),\n ])\n\n const tokenAmounts: TokenAmount[] = tokens.map((token, index) => {\n const result = results[index]\n if (result.status === 'rejected') {\n return {\n ...token,\n blockNumber,\n }\n }\n return {\n ...token,\n amount: result.value,\n blockNumber,\n }\n })\n return tokenAmounts\n}\n"],"mappings":";;;;;;;AAaA,MAAa,qBAAqB,OAChC,QACA,eACA,WAC2B;AAC3B,KAAI,OAAO,WAAW,EACpB,QAAO,EAAE;CAEX,MAAM,EAAE,YAAY,OAAO;AAC3B,MAAK,MAAM,SAAS,OAClB,KAAI,MAAM,YAAY,QACpB,SAAQ,KAAK,iDAAiD;CAIlE,MAAM,mBAAmB,MAAMA,oCAAAA,oBAAoB,QAAQ,QAAQ;CAEnE,MAAM,aAAa,MAAMC,4BAAAA,gBAAgB,QAAQ,QAAQ;AACzD,KAAI,oBAAoB,OAAO,SAAS,EACtC,QAAO,uBACL,YACA,QACA,eACA,iBACD;AAEH,QAAO,0BAA0B,YAAY,QAAQ,cAAc;;AAGrE,MAAM,yBAAyB,OAC7B,QACA,QACA,eACA,qBAC2B;CAC3B,MAAM,YAAY,OAAO,KAAK,UAAU;AACtC,MAAIC,4BAAAA,cAAc,MAAM,QAAQ,CAC9B,QAAO;GACL,SAAS;GACT,KAAKC,kBAAAA;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB;AAEH,SAAO;GACL,SAAS,MAAM;GACf,KAAKC,kBAAAA;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB;GACD;CAEF,MAAM,CAAC,aAAa,WAAW,MAAM,QAAQ,IAAI,EAAA,GAAA,aAAA,gBAChC,OAAO,GAAA,GAAA,aAAA,WACZ,QAAQ;EAChB;EACkB;EACnB,CAAC,CACH,CAAC;AAEF,KAAI,CAAC,QAAQ,OACX,QAAO,EAAE;AAGX,QAAO,OAAO,KAAK,OAAO,MAAc;AACtC,SAAO;GACL,GAAG;GACH,QAAQ,QAAQ,GAAG;GACnB;GACD;GACD;;AAGJ,MAAM,4BAA4B,OAChC,QACA,QACA,kBAC2B;CAC3B,MAAM,QAA2B,OAAO,KAAK,UAAU;AACrD,MAAIF,4BAAAA,cAAc,MAAM,QAAQ,CAC9B,SAAA,GAAA,aAAA,YAAkB,QAAQ,EACxB,SAAS,eACV,CAAC;AAEJ,UAAA,GAAA,aAAA,cAAoB,QAAQ;GAC1B,SAAS,MAAM;GACf,KAAKE,kBAAAA;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB,CAAC;GACF;CAEF,MAAM,CAAC,aAAa,WAAW,MAAM,QAAQ,IAAI,EAAA,GAAA,aAAA,gBAChC,OAAO,EACtB,QAAQ,WAAW,MAAM,CAC1B,CAAC;AAgBF,QAdoC,OAAO,KAAK,OAAO,UAAU;EAC/D,MAAM,SAAS,QAAQ;AACvB,MAAI,OAAO,WAAW,WACpB,QAAO;GACL,GAAG;GACH;GACD;AAEH,SAAO;GACL,GAAG;GACH,QAAQ,OAAO;GACf;GACD;GACD"}
1
+ {"version":3,"file":"getEthereumBalance.js","names":["getMulticallAddress","getPublicClient","isZeroAddress","getEthBalanceAbi","balanceOfAbi"],"sources":["../../../src/actions/getEthereumBalance.ts"],"sourcesContent":["import type { SDKClient, Token, TokenAmount } from '@lifi/sdk'\nimport type { Address, Client } from 'viem'\nimport {\n getBalance,\n getBlockNumber,\n multicall,\n readContract,\n} from 'viem/actions'\nimport { getPublicClient } from '../client/publicClient.js'\nimport { balanceOfAbi, getEthBalanceAbi } from '../utils/abi.js'\nimport { isZeroAddress } from '../utils/isZeroAddress.js'\nimport { getMulticallAddress } from './getMulticallAddress.js'\n\nexport const getEthereumBalance = async (\n client: SDKClient,\n walletAddress: Address,\n tokens: Token[]\n): Promise<TokenAmount[]> => {\n if (tokens.length === 0) {\n return []\n }\n const { chainId } = tokens[0]\n for (const token of tokens) {\n if (token.chainId !== chainId) {\n console.warn('Requested tokens have to be on the same chain.')\n }\n }\n\n const multicallAddress = await getMulticallAddress(client, chainId)\n\n const viemClient = await getPublicClient(client, chainId)\n if (multicallAddress && tokens.length > 1) {\n return getEVMBalanceMulticall(\n viemClient,\n tokens,\n walletAddress,\n multicallAddress\n )\n }\n return getEthereumBalanceDefault(viemClient, tokens, walletAddress)\n}\n\nconst getEVMBalanceMulticall = async (\n client: Client,\n tokens: Token[],\n walletAddress: string,\n multicallAddress: string\n): Promise<TokenAmount[]> => {\n const contracts = tokens.map((token) => {\n if (isZeroAddress(token.address)) {\n return {\n address: multicallAddress as Address,\n abi: getEthBalanceAbi,\n functionName: 'getEthBalance',\n args: [walletAddress],\n }\n }\n return {\n address: token.address as Address,\n abi: balanceOfAbi,\n functionName: 'balanceOf',\n args: [walletAddress],\n }\n })\n\n const [blockNumber, results] = await Promise.all([\n getBlockNumber(client),\n multicall(client, {\n contracts,\n multicallAddress: multicallAddress as Address,\n }),\n ])\n\n if (!results.length) {\n return []\n }\n\n return tokens.map((token, i: number) => {\n const result = results[i]\n if (result.status !== 'success') {\n // RPC sub-call failed — leave amount undefined so callers can\n // distinguish an unknown balance from a known zero.\n return {\n ...token,\n blockNumber,\n }\n }\n return {\n ...token,\n amount: result.result as bigint,\n blockNumber,\n }\n })\n}\n\nconst getEthereumBalanceDefault = async (\n client: Client,\n tokens: Token[],\n walletAddress: Address\n): Promise<TokenAmount[]> => {\n const queue: Promise<bigint>[] = tokens.map((token) => {\n if (isZeroAddress(token.address)) {\n return getBalance(client, {\n address: walletAddress as Address,\n })\n }\n return readContract(client, {\n address: token.address as Address,\n abi: balanceOfAbi,\n functionName: 'balanceOf',\n args: [walletAddress],\n }) as Promise<bigint>\n })\n\n const [blockNumber, results] = await Promise.all([\n getBlockNumber(client),\n Promise.allSettled(queue),\n ])\n\n const tokenAmounts: TokenAmount[] = tokens.map((token, index) => {\n const result = results[index]\n if (result.status === 'rejected') {\n return {\n ...token,\n blockNumber,\n }\n }\n return {\n ...token,\n amount: result.value,\n blockNumber,\n }\n })\n return tokenAmounts\n}\n"],"mappings":";;;;;;;AAaA,MAAa,qBAAqB,OAChC,QACA,eACA,WAC2B;AAC3B,KAAI,OAAO,WAAW,EACpB,QAAO,EAAE;CAEX,MAAM,EAAE,YAAY,OAAO;AAC3B,MAAK,MAAM,SAAS,OAClB,KAAI,MAAM,YAAY,QACpB,SAAQ,KAAK,iDAAiD;CAIlE,MAAM,mBAAmB,MAAMA,oCAAAA,oBAAoB,QAAQ,QAAQ;CAEnE,MAAM,aAAa,MAAMC,4BAAAA,gBAAgB,QAAQ,QAAQ;AACzD,KAAI,oBAAoB,OAAO,SAAS,EACtC,QAAO,uBACL,YACA,QACA,eACA,iBACD;AAEH,QAAO,0BAA0B,YAAY,QAAQ,cAAc;;AAGrE,MAAM,yBAAyB,OAC7B,QACA,QACA,eACA,qBAC2B;CAC3B,MAAM,YAAY,OAAO,KAAK,UAAU;AACtC,MAAIC,4BAAAA,cAAc,MAAM,QAAQ,CAC9B,QAAO;GACL,SAAS;GACT,KAAKC,kBAAAA;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB;AAEH,SAAO;GACL,SAAS,MAAM;GACf,KAAKC,kBAAAA;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB;GACD;CAEF,MAAM,CAAC,aAAa,WAAW,MAAM,QAAQ,IAAI,EAAA,GAAA,aAAA,gBAChC,OAAO,GAAA,GAAA,aAAA,WACZ,QAAQ;EAChB;EACkB;EACnB,CAAC,CACH,CAAC;AAEF,KAAI,CAAC,QAAQ,OACX,QAAO,EAAE;AAGX,QAAO,OAAO,KAAK,OAAO,MAAc;EACtC,MAAM,SAAS,QAAQ;AACvB,MAAI,OAAO,WAAW,UAGpB,QAAO;GACL,GAAG;GACH;GACD;AAEH,SAAO;GACL,GAAG;GACH,QAAQ,OAAO;GACf;GACD;GACD;;AAGJ,MAAM,4BAA4B,OAChC,QACA,QACA,kBAC2B;CAC3B,MAAM,QAA2B,OAAO,KAAK,UAAU;AACrD,MAAIF,4BAAAA,cAAc,MAAM,QAAQ,CAC9B,SAAA,GAAA,aAAA,YAAkB,QAAQ,EACxB,SAAS,eACV,CAAC;AAEJ,UAAA,GAAA,aAAA,cAAoB,QAAQ;GAC1B,SAAS,MAAM;GACf,KAAKE,kBAAAA;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB,CAAC;GACF;CAEF,MAAM,CAAC,aAAa,WAAW,MAAM,QAAQ,IAAI,EAAA,GAAA,aAAA,gBAChC,OAAO,EACtB,QAAQ,WAAW,MAAM,CAC1B,CAAC;AAgBF,QAdoC,OAAO,KAAK,OAAO,UAAU;EAC/D,MAAM,SAAS,QAAQ;AACvB,MAAI,OAAO,WAAW,WACpB,QAAO;GACL,GAAG;GACH;GACD;AAEH,SAAO;GACL,GAAG;GACH,QAAQ,OAAO;GACf;GACD;GACD"}
@@ -1,6 +1,6 @@
1
1
  //#region src/version.d.ts
2
2
  declare const name = "@lifi/sdk-provider-ethereum";
3
- declare const version = "4.0.0-beta.4";
3
+ declare const version = "4.0.0-beta.6";
4
4
  //#endregion
5
5
  export { name, version };
6
6
  //# sourceMappingURL=version.d.ts.map
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region src/version.ts
3
3
  const name = "@lifi/sdk-provider-ethereum";
4
- const version = "4.0.0-beta.4";
4
+ const version = "4.0.0-beta.6";
5
5
  //#endregion
6
6
  exports.name = name;
7
7
  exports.version = version;
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","names":[],"sources":["../../src/version.ts"],"sourcesContent":["export const name = '@lifi/sdk-provider-ethereum'\nexport const version = '4.0.0-beta.4'\n"],"mappings":";;AAAA,MAAa,OAAO;AACpB,MAAa,UAAU"}
1
+ {"version":3,"file":"version.js","names":[],"sources":["../../src/version.ts"],"sourcesContent":["export const name = '@lifi/sdk-provider-ethereum'\nexport const version = '4.0.0-beta.6'\n"],"mappings":";;AAAA,MAAa,OAAO;AACpB,MAAa,UAAU"}
@@ -34,9 +34,14 @@ const getEVMBalanceMulticall = async (client, tokens, walletAddress, multicallAd
34
34
  })]);
35
35
  if (!results.length) return [];
36
36
  return tokens.map((token, i) => {
37
+ const result = results[i];
38
+ if (result.status !== "success") return {
39
+ ...token,
40
+ blockNumber
41
+ };
37
42
  return {
38
43
  ...token,
39
- amount: results[i].result,
44
+ amount: result.result,
40
45
  blockNumber
41
46
  };
42
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getEthereumBalance.js","names":[],"sources":["../../../src/actions/getEthereumBalance.ts"],"sourcesContent":["import type { SDKClient, Token, TokenAmount } from '@lifi/sdk'\nimport type { Address, Client } from 'viem'\nimport {\n getBalance,\n getBlockNumber,\n multicall,\n readContract,\n} from 'viem/actions'\nimport { getPublicClient } from '../client/publicClient.js'\nimport { balanceOfAbi, getEthBalanceAbi } from '../utils/abi.js'\nimport { isZeroAddress } from '../utils/isZeroAddress.js'\nimport { getMulticallAddress } from './getMulticallAddress.js'\n\nexport const getEthereumBalance = async (\n client: SDKClient,\n walletAddress: Address,\n tokens: Token[]\n): Promise<TokenAmount[]> => {\n if (tokens.length === 0) {\n return []\n }\n const { chainId } = tokens[0]\n for (const token of tokens) {\n if (token.chainId !== chainId) {\n console.warn('Requested tokens have to be on the same chain.')\n }\n }\n\n const multicallAddress = await getMulticallAddress(client, chainId)\n\n const viemClient = await getPublicClient(client, chainId)\n if (multicallAddress && tokens.length > 1) {\n return getEVMBalanceMulticall(\n viemClient,\n tokens,\n walletAddress,\n multicallAddress\n )\n }\n return getEthereumBalanceDefault(viemClient, tokens, walletAddress)\n}\n\nconst getEVMBalanceMulticall = async (\n client: Client,\n tokens: Token[],\n walletAddress: string,\n multicallAddress: string\n): Promise<TokenAmount[]> => {\n const contracts = tokens.map((token) => {\n if (isZeroAddress(token.address)) {\n return {\n address: multicallAddress as Address,\n abi: getEthBalanceAbi,\n functionName: 'getEthBalance',\n args: [walletAddress],\n }\n }\n return {\n address: token.address as Address,\n abi: balanceOfAbi,\n functionName: 'balanceOf',\n args: [walletAddress],\n }\n })\n\n const [blockNumber, results] = await Promise.all([\n getBlockNumber(client),\n multicall(client, {\n contracts,\n multicallAddress: multicallAddress as Address,\n }),\n ])\n\n if (!results.length) {\n return []\n }\n\n return tokens.map((token, i: number) => {\n return {\n ...token,\n amount: results[i].result as bigint,\n blockNumber,\n }\n })\n}\n\nconst getEthereumBalanceDefault = async (\n client: Client,\n tokens: Token[],\n walletAddress: Address\n): Promise<TokenAmount[]> => {\n const queue: Promise<bigint>[] = tokens.map((token) => {\n if (isZeroAddress(token.address)) {\n return getBalance(client, {\n address: walletAddress as Address,\n })\n }\n return readContract(client, {\n address: token.address as Address,\n abi: balanceOfAbi,\n functionName: 'balanceOf',\n args: [walletAddress],\n }) as Promise<bigint>\n })\n\n const [blockNumber, results] = await Promise.all([\n getBlockNumber(client),\n Promise.allSettled(queue),\n ])\n\n const tokenAmounts: TokenAmount[] = tokens.map((token, index) => {\n const result = results[index]\n if (result.status === 'rejected') {\n return {\n ...token,\n blockNumber,\n }\n }\n return {\n ...token,\n amount: result.value,\n blockNumber,\n }\n })\n return tokenAmounts\n}\n"],"mappings":";;;;;;AAaA,MAAa,qBAAqB,OAChC,QACA,eACA,WAC2B;AAC3B,KAAI,OAAO,WAAW,EACpB,QAAO,EAAE;CAEX,MAAM,EAAE,YAAY,OAAO;AAC3B,MAAK,MAAM,SAAS,OAClB,KAAI,MAAM,YAAY,QACpB,SAAQ,KAAK,iDAAiD;CAIlE,MAAM,mBAAmB,MAAM,oBAAoB,QAAQ,QAAQ;CAEnE,MAAM,aAAa,MAAM,gBAAgB,QAAQ,QAAQ;AACzD,KAAI,oBAAoB,OAAO,SAAS,EACtC,QAAO,uBACL,YACA,QACA,eACA,iBACD;AAEH,QAAO,0BAA0B,YAAY,QAAQ,cAAc;;AAGrE,MAAM,yBAAyB,OAC7B,QACA,QACA,eACA,qBAC2B;CAC3B,MAAM,YAAY,OAAO,KAAK,UAAU;AACtC,MAAI,cAAc,MAAM,QAAQ,CAC9B,QAAO;GACL,SAAS;GACT,KAAK;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB;AAEH,SAAO;GACL,SAAS,MAAM;GACf,KAAK;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB;GACD;CAEF,MAAM,CAAC,aAAa,WAAW,MAAM,QAAQ,IAAI,CAC/C,eAAe,OAAO,EACtB,UAAU,QAAQ;EAChB;EACkB;EACnB,CAAC,CACH,CAAC;AAEF,KAAI,CAAC,QAAQ,OACX,QAAO,EAAE;AAGX,QAAO,OAAO,KAAK,OAAO,MAAc;AACtC,SAAO;GACL,GAAG;GACH,QAAQ,QAAQ,GAAG;GACnB;GACD;GACD;;AAGJ,MAAM,4BAA4B,OAChC,QACA,QACA,kBAC2B;CAC3B,MAAM,QAA2B,OAAO,KAAK,UAAU;AACrD,MAAI,cAAc,MAAM,QAAQ,CAC9B,QAAO,WAAW,QAAQ,EACxB,SAAS,eACV,CAAC;AAEJ,SAAO,aAAa,QAAQ;GAC1B,SAAS,MAAM;GACf,KAAK;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB,CAAC;GACF;CAEF,MAAM,CAAC,aAAa,WAAW,MAAM,QAAQ,IAAI,CAC/C,eAAe,OAAO,EACtB,QAAQ,WAAW,MAAM,CAC1B,CAAC;AAgBF,QAdoC,OAAO,KAAK,OAAO,UAAU;EAC/D,MAAM,SAAS,QAAQ;AACvB,MAAI,OAAO,WAAW,WACpB,QAAO;GACL,GAAG;GACH;GACD;AAEH,SAAO;GACL,GAAG;GACH,QAAQ,OAAO;GACf;GACD;GACD"}
1
+ {"version":3,"file":"getEthereumBalance.js","names":[],"sources":["../../../src/actions/getEthereumBalance.ts"],"sourcesContent":["import type { SDKClient, Token, TokenAmount } from '@lifi/sdk'\nimport type { Address, Client } from 'viem'\nimport {\n getBalance,\n getBlockNumber,\n multicall,\n readContract,\n} from 'viem/actions'\nimport { getPublicClient } from '../client/publicClient.js'\nimport { balanceOfAbi, getEthBalanceAbi } from '../utils/abi.js'\nimport { isZeroAddress } from '../utils/isZeroAddress.js'\nimport { getMulticallAddress } from './getMulticallAddress.js'\n\nexport const getEthereumBalance = async (\n client: SDKClient,\n walletAddress: Address,\n tokens: Token[]\n): Promise<TokenAmount[]> => {\n if (tokens.length === 0) {\n return []\n }\n const { chainId } = tokens[0]\n for (const token of tokens) {\n if (token.chainId !== chainId) {\n console.warn('Requested tokens have to be on the same chain.')\n }\n }\n\n const multicallAddress = await getMulticallAddress(client, chainId)\n\n const viemClient = await getPublicClient(client, chainId)\n if (multicallAddress && tokens.length > 1) {\n return getEVMBalanceMulticall(\n viemClient,\n tokens,\n walletAddress,\n multicallAddress\n )\n }\n return getEthereumBalanceDefault(viemClient, tokens, walletAddress)\n}\n\nconst getEVMBalanceMulticall = async (\n client: Client,\n tokens: Token[],\n walletAddress: string,\n multicallAddress: string\n): Promise<TokenAmount[]> => {\n const contracts = tokens.map((token) => {\n if (isZeroAddress(token.address)) {\n return {\n address: multicallAddress as Address,\n abi: getEthBalanceAbi,\n functionName: 'getEthBalance',\n args: [walletAddress],\n }\n }\n return {\n address: token.address as Address,\n abi: balanceOfAbi,\n functionName: 'balanceOf',\n args: [walletAddress],\n }\n })\n\n const [blockNumber, results] = await Promise.all([\n getBlockNumber(client),\n multicall(client, {\n contracts,\n multicallAddress: multicallAddress as Address,\n }),\n ])\n\n if (!results.length) {\n return []\n }\n\n return tokens.map((token, i: number) => {\n const result = results[i]\n if (result.status !== 'success') {\n // RPC sub-call failed — leave amount undefined so callers can\n // distinguish an unknown balance from a known zero.\n return {\n ...token,\n blockNumber,\n }\n }\n return {\n ...token,\n amount: result.result as bigint,\n blockNumber,\n }\n })\n}\n\nconst getEthereumBalanceDefault = async (\n client: Client,\n tokens: Token[],\n walletAddress: Address\n): Promise<TokenAmount[]> => {\n const queue: Promise<bigint>[] = tokens.map((token) => {\n if (isZeroAddress(token.address)) {\n return getBalance(client, {\n address: walletAddress as Address,\n })\n }\n return readContract(client, {\n address: token.address as Address,\n abi: balanceOfAbi,\n functionName: 'balanceOf',\n args: [walletAddress],\n }) as Promise<bigint>\n })\n\n const [blockNumber, results] = await Promise.all([\n getBlockNumber(client),\n Promise.allSettled(queue),\n ])\n\n const tokenAmounts: TokenAmount[] = tokens.map((token, index) => {\n const result = results[index]\n if (result.status === 'rejected') {\n return {\n ...token,\n blockNumber,\n }\n }\n return {\n ...token,\n amount: result.value,\n blockNumber,\n }\n })\n return tokenAmounts\n}\n"],"mappings":";;;;;;AAaA,MAAa,qBAAqB,OAChC,QACA,eACA,WAC2B;AAC3B,KAAI,OAAO,WAAW,EACpB,QAAO,EAAE;CAEX,MAAM,EAAE,YAAY,OAAO;AAC3B,MAAK,MAAM,SAAS,OAClB,KAAI,MAAM,YAAY,QACpB,SAAQ,KAAK,iDAAiD;CAIlE,MAAM,mBAAmB,MAAM,oBAAoB,QAAQ,QAAQ;CAEnE,MAAM,aAAa,MAAM,gBAAgB,QAAQ,QAAQ;AACzD,KAAI,oBAAoB,OAAO,SAAS,EACtC,QAAO,uBACL,YACA,QACA,eACA,iBACD;AAEH,QAAO,0BAA0B,YAAY,QAAQ,cAAc;;AAGrE,MAAM,yBAAyB,OAC7B,QACA,QACA,eACA,qBAC2B;CAC3B,MAAM,YAAY,OAAO,KAAK,UAAU;AACtC,MAAI,cAAc,MAAM,QAAQ,CAC9B,QAAO;GACL,SAAS;GACT,KAAK;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB;AAEH,SAAO;GACL,SAAS,MAAM;GACf,KAAK;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB;GACD;CAEF,MAAM,CAAC,aAAa,WAAW,MAAM,QAAQ,IAAI,CAC/C,eAAe,OAAO,EACtB,UAAU,QAAQ;EAChB;EACkB;EACnB,CAAC,CACH,CAAC;AAEF,KAAI,CAAC,QAAQ,OACX,QAAO,EAAE;AAGX,QAAO,OAAO,KAAK,OAAO,MAAc;EACtC,MAAM,SAAS,QAAQ;AACvB,MAAI,OAAO,WAAW,UAGpB,QAAO;GACL,GAAG;GACH;GACD;AAEH,SAAO;GACL,GAAG;GACH,QAAQ,OAAO;GACf;GACD;GACD;;AAGJ,MAAM,4BAA4B,OAChC,QACA,QACA,kBAC2B;CAC3B,MAAM,QAA2B,OAAO,KAAK,UAAU;AACrD,MAAI,cAAc,MAAM,QAAQ,CAC9B,QAAO,WAAW,QAAQ,EACxB,SAAS,eACV,CAAC;AAEJ,SAAO,aAAa,QAAQ;GAC1B,SAAS,MAAM;GACf,KAAK;GACL,cAAc;GACd,MAAM,CAAC,cAAc;GACtB,CAAC;GACF;CAEF,MAAM,CAAC,aAAa,WAAW,MAAM,QAAQ,IAAI,CAC/C,eAAe,OAAO,EACtB,QAAQ,WAAW,MAAM,CAC1B,CAAC;AAgBF,QAdoC,OAAO,KAAK,OAAO,UAAU;EAC/D,MAAM,SAAS,QAAQ;AACvB,MAAI,OAAO,WAAW,WACpB,QAAO;GACL,GAAG;GACH;GACD;AAEH,SAAO;GACL,GAAG;GACH,QAAQ,OAAO;GACf;GACD;GACD"}
@@ -1,6 +1,6 @@
1
1
  //#region src/version.d.ts
2
2
  declare const name = "@lifi/sdk-provider-ethereum";
3
- declare const version = "4.0.0-beta.4";
3
+ declare const version = "4.0.0-beta.6";
4
4
  //#endregion
5
5
  export { name, version };
6
6
  //# sourceMappingURL=version.d.ts.map
@@ -1,6 +1,6 @@
1
1
  //#region src/version.ts
2
2
  const name = "@lifi/sdk-provider-ethereum";
3
- const version = "4.0.0-beta.4";
3
+ const version = "4.0.0-beta.6";
4
4
  //#endregion
5
5
  export { name, version };
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","names":[],"sources":["../../src/version.ts"],"sourcesContent":["export const name = '@lifi/sdk-provider-ethereum'\nexport const version = '4.0.0-beta.4'\n"],"mappings":";AAAA,MAAa,OAAO;AACpB,MAAa,UAAU"}
1
+ {"version":3,"file":"version.js","names":[],"sources":["../../src/version.ts"],"sourcesContent":["export const name = '@lifi/sdk-provider-ethereum'\nexport const version = '4.0.0-beta.6'\n"],"mappings":";AAAA,MAAa,OAAO;AACpB,MAAa,UAAU"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/sdk-provider-ethereum",
3
- "version": "4.0.0-beta.4",
3
+ "version": "4.0.0-beta.6",
4
4
  "description": "LI.FI Ethereum SDK Provider for Any-to-Any Cross-Chain-Swap",
5
5
  "homepage": "https://github.com/lifinance/sdk",
6
6
  "bugs": {
@@ -28,8 +28,8 @@
28
28
  "./package.json": "./package.json"
29
29
  },
30
30
  "dependencies": {
31
- "viem": "^2.47.6",
32
- "@lifi/sdk": "4.0.0-beta.4"
31
+ "viem": "^2.47.18",
32
+ "@lifi/sdk": "4.0.0-beta.6"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "public"
@@ -76,9 +76,18 @@ const getEVMBalanceMulticall = async (
76
76
  }
77
77
 
78
78
  return tokens.map((token, i: number) => {
79
+ const result = results[i]
80
+ if (result.status !== 'success') {
81
+ // RPC sub-call failed — leave amount undefined so callers can
82
+ // distinguish an unknown balance from a known zero.
83
+ return {
84
+ ...token,
85
+ blockNumber,
86
+ }
87
+ }
79
88
  return {
80
89
  ...token,
81
- amount: results[i].result as bigint,
90
+ amount: result.result as bigint,
82
91
  blockNumber,
83
92
  }
84
93
  })
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/sdk-provider-ethereum'
2
- export const version = '4.0.0-beta.4'
2
+ export const version = '4.0.0-beta.6'