/**
 * Generated by orval v7.21.0 🍺
 * Do not edit manually.
 * Coinbase Developer Platform APIs
 * The Coinbase Developer Platform APIs - leading the world's transition onchain.
 * OpenAPI spec version: 2.0.0
 */
import type {
  ListEvmTokenBalances200,
  ListEvmTokenBalancesNetwork,
  ListEvmTokenBalancesParams,
} from "../coinbaseDeveloperPlatformAPIs.schemas.js";

import { cdpApiClient } from "../../cdpApiClient.js";

type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];

/**
 * Lists the token balances of an EVM address on a given network. The balances include ERC-20 tokens and the native gas token (usually ETH). The response is paginated, and by default, returns 20 balances per page.

Calls to the `base` and `base-sepolia` networks offer:
  * 99.5% < 2 second freshness from chain tip for new tokens on an address.
  * 99.5% < 2 second freshness from chain tip for balance data.

Calls to the `ethereum` network offer:
  * 99% < 30 second freshness from chain tip for new tokens on an address.
  * 99% < 2 second freshness from chain tip for balance data.
 * @summary List EVM token balances
 */
export const listEvmTokenBalances = (
  network: ListEvmTokenBalancesNetwork,
  address: string,
  params?: ListEvmTokenBalancesParams,
  options?: SecondParameter<typeof cdpApiClient<ListEvmTokenBalances200>>,
) => {
  return cdpApiClient<ListEvmTokenBalances200>(
    { url: `/v2/evm/token-balances/${network}/${address}`, method: "GET", params },
    options,
  );
};
export type ListEvmTokenBalancesResult = NonNullable<
  Awaited<ReturnType<typeof listEvmTokenBalances>>
>;
