/**
 * 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 {
  AccountTokenAddressesResponse,
  ListDataTokenBalances200,
  ListDataTokenBalancesParams,
  ListEvmTokenBalancesNetwork,
} from "../coinbaseDeveloperPlatformAPIs.schemas.js";

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

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

/**
 * Retrieve all ERC-20 token contract addresses that an account has ever received tokens from.
Analyzes transaction history to discover token interactions.

 * @summary List token addresses for account
 */
export const listTokensForAccount = (
  network: "base" | "base-sepolia",
  address: string,
  options?: SecondParameter<typeof cdpApiClient<AccountTokenAddressesResponse>>,
) => {
  return cdpApiClient<AccountTokenAddressesResponse>(
    { url: `/v2/data/evm/token-ownership/${network}/${address}`, method: "GET" },
    options,
  );
};
/**
 * 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.

**Note:** This endpoint provides <1 second freshness from chain tip, <500ms response latency for wallets with reasonable token history, and 99.9% uptime for production use.
 * @summary List EVM token balances
 */
export const listDataTokenBalances = (
  network: ListEvmTokenBalancesNetwork,
  address: string,
  params?: ListDataTokenBalancesParams,
  options?: SecondParameter<typeof cdpApiClient<ListDataTokenBalances200>>,
) => {
  return cdpApiClient<ListDataTokenBalances200>(
    { url: `/v2/data/evm/token-balances/${network}/${address}`, method: "GET", params },
    options,
  );
};
export type ListTokensForAccountResult = NonNullable<
  Awaited<ReturnType<typeof listTokensForAccount>>
>;
export type ListDataTokenBalancesResult = NonNullable<
  Awaited<ReturnType<typeof listDataTokenBalances>>
>;
