跳转到主要内容

获取可用代币

getTokens

检索指定链上所有可用代币的列表。 参数
  • params (TokensRequest, 可选): 请求代币的配置。
    • chains (ChainId[], 可选): 链 ID 或键的列表。如果未指定,则返回所有可用链上的代币。
    • chainTypes (ChainType[], 可选): 链类型列表。
  • options (RequestOptions, 可选): 其他请求选项。
返回 解析为 TokensResponse 的 Promise
示例
import { ChainType, getTokens } from '@lifi/sdk';

try {
  const tokens = await getTokens({
    chainTypes: [ChainType.EVM, ChainType.SVM],
  });
  console.log(tokens);
} catch (error) {
  console.error(error);
}

getToken

获取指定链上特定代币的详细信息。 参数
  • chain (ChainKey | ChainId): 包含代币的链的 ID 或键。
  • token (string): 请求链上代币的地址或符号。
  • options (RequestOptions, 可选): 其他请求选项。
返回 解析为 Token 对象的 Promise。
示例
import { getToken } from '@lifi/sdk';

const chainId = 1;
const tokenAddress = '0x0000000000000000000000000000000000000000';

try {
  const token = await getToken(chainId, tokenAddress);
  console.log(token);
} catch (error) {
  console.error(error);
}

获取代币余额

请确保您首先使用 EVM/Solana 提供程序配置 SDK。使用此功能需要它们。此外,建议提供您的私有 RPC URL,因为默认使用公共 URL,并且可能会对您的多个请求(例如一次获取多个代币的余额)进行速率限制。 阅读更多配置 SDK 提供程序

getTokenBalance

返回钱包持有的特定代币的余额。 参数
  • walletAddress (string): 钱包地址。
  • token (Token): Token 对象。
返回 解析为 TokenAmountnull 的 Promise。
示例
import { getToken, getTokenBalance } from '@lifi/sdk';

const chainId = 1;
const tokenAddress = '0x0000000000000000000000000000000000000000';
const walletAddress = '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0';

try {
  const token = await getToken(chainId, tokenAddress);
  const tokenBalance = await getTokenBalance(walletAddress, token);
  console.log(tokenBalance);
} catch (error) {
  console.error(error);
}

getTokenBalances

返回钱包持有的代币列表的余额。 参数
  • walletAddress (string): 钱包地址。
  • tokens (Token[]): Token 对象列表。
返回 解析为 TokenAmount 对象列表的 Promise。
示例
import { ChainId, getTokenBalances, getTokens } from '@lifi/sdk';

const walletAddress = '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0';

try {
  const tokensResponse = await getTokens();
  const optimismTokens = tokensResponse.tokens[ChainId.OPT];
  const tokenBalances = await getTokenBalances(walletAddress, optimismTokens);
  console.log(tokenBalances);
} catch (error) {
  console.error(error);
}

getTokenBalancesByChain

查询给定钱包的特定链列表的代币余额。 参数
  • walletAddress (string): 钱包地址。
  • tokensByChain [chainId: number]: Token[]: 按链 ID 组织的 Token 对象列表。
返回 解析为包含不同链上的代币及其金额的对象的 Promise。
示例
import { getTokenBalancesByChain } from '@lifi/sdk';

const walletAddress = '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0';
const tokensByChain = {
  1: [
    {
      chainId: 1,
      address: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
      symbol: 'DAI',
      name: 'DAI Stablecoin',
      decimals: 18,
      priceUSD: '0.9999',
    },
  ],
  10: [
    {
      chainId: 10,
      address: '0x4200000000000000000000000000000000000042',
      symbol: 'OP',
      name: 'Optimism',
      decimals: 18,
      priceUSD: '1.9644',
    },
  ],
};

try {
  const balances = await getTokenBalancesByChain(walletAddress, tokensByChain);
  console.log(balances);
} catch (error) {
  console.error(error);
}

管理代币授权

代币授权和批准功能特定于 EVM(以太坊虚拟机)链。它允许智能合约通过批准合约可以从用户钱包中花费的一定数量的代币来与 ERC-20 代币交互。 请确保您使用 EVM 提供程序配置 SDK。使用此功能需要它。 阅读更多配置 SDK 提供程序

getTokenAllowance

获取特定代币的当前授权额度。 参数
  • token (BaseToken): 要检查授权额度的代币。
  • ownerAddress (string): 代币的所有者。
  • spenderAddress (string): 已批准的支出者地址。
返回 解析为表示授权额度的 bigint 或如果代币是原生代币则为 undefined 的 Promise。
示例
import { getTokenAllowance } from '@lifi/sdk';

const token = {
  address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
  chainId: 1,
};

const ownerAddress = '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0';
const spenderAddress = '0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE';

try {
  const allowance = await getTokenAllowance(token, ownerAddress, spenderAddress);
  console.log('Allowance:', allowance);
} catch (error) {
  console.error('Error:', error);
}

getTokenAllowanceMulticall

获取代币/支出者地址对列表的当前授权额度。 参数
  • ownerAddress (string): 代币的所有者。
  • tokens (TokenSpender[]): 代币和支出者地址对的列表。
返回 解析为 TokenAllowance 对象数组的 Promise。
示例
import { getTokenAllowanceMulticall } from '@lifi/sdk';

const ownerAddress = '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0';
const tokens = [
  {
    token: {
      address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
      chainId: 1,
    },
    spenderAddress: '0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE',
  },
  {
    token: {
      address: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
      chainId: 1,
    },
    spenderAddress: '0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE',
  },
];

try {
  const allowances = await getTokenAllowanceMulticall(ownerAddress, tokens);
  console.log('Allowances:', allowances);
} catch (error) {
  console.error('Error:', error);
}

setTokenAllowance

为特定代币和支出者地址设置代币授权额度。 参数
  • request (ApproveTokenRequest): 批准请求。
    • walletClient (WalletClient): 用于发送交易的钱包客户端。
    • token (BaseToken): 要设置授权额度的代币。
    • spenderAddress (string): 支出者的地址。
    • amount (bigint): 要批准的代币数量。
    • infiniteApproval (boolean, 可选): 如果为 true,则将批准设置为最大 uint256 值。
返回 解析为表示交易哈希的 Hash 或如果不需要交易(例如,对于原生代币)则为 void 的 Promise。
示例
import { setTokenAllowance } from '@lifi/sdk';

const approvalRequest = {
  walletClient: walletClient, // Viem wallet client
  token: {
    address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
    chainId: 1,
  },
  spenderAddress: '0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE',
  amount: 100000000n,
};

try {
  const txHash = await setTokenAllowance(approvalRequest);
  console.log('Transaction Hash:', txHash);
} catch (error) {
  console.error('Error:', error);
}

revokeTokenApproval

撤销特定代币和支出者地址的代币批准。 参数
  • request (RevokeApprovalRequest): 撤销请求。
    • walletClient (WalletClient): 用于发送交易的钱包客户端。
    • token (BaseToken): 要撤销授权额度的代币。
    • spenderAddress (string): 支出者的地址。
返回 解析为表示交易哈希的 Hash 或如果不需要交易(例如,对于原生代币)则为 void 的 Promise。
示例
import { revokeTokenApproval } from '@lifi/sdk';

const revokeRequest = {
  walletClient: walletClient, // Viem wallet client
  token: {
    address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
    chainId: 1,
  },
  spenderAddress: '0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE',
};

try {
  const txHash = await revokeTokenApproval(revokeRequest);
  console.log('Transaction Hash:', txHash);
} catch (error) {
  console.error('Error:', error);
}
I