From 703361e147f3fd9dadd6e47d53fb974e9febeb9c Mon Sep 17 00:00:00 2001 From: Viral Sangani Date: Mon, 13 Jul 2026 17:48:12 -0700 Subject: [PATCH] feat(tokens): add USDT token definition Adds a multi-chain `usdt` token definition to `viem/tokens`, mirroring the existing `usdc` definition. Covers native Tether USD (6 decimals) on mainnet, optimism, base, celo, avalanche, linea, and scroll. All addresses verified on-chain (name/symbol/decimals) before inclusion. Chains where the canonical deployment is USDT0 or a bridged variant, or uses non-6 decimals (e.g. BSC at 18), are intentionally excluded. --- .changeset/tall-hats-follow.md | 5 ++++ src/tokens/definitions/usdt.ts | 47 ++++++++++++++++++++++++++++++++++ src/tokens/index.test.ts | 1 + src/tokens/index.ts | 1 + src/tokens/sets.ts | 2 ++ 5 files changed, 56 insertions(+) create mode 100644 .changeset/tall-hats-follow.md create mode 100644 src/tokens/definitions/usdt.ts diff --git a/.changeset/tall-hats-follow.md b/.changeset/tall-hats-follow.md new file mode 100644 index 0000000000..29bb53795e --- /dev/null +++ b/.changeset/tall-hats-follow.md @@ -0,0 +1,5 @@ +--- +"viem": patch +--- + +Added USDT token definition to `viem/tokens`. diff --git a/src/tokens/definitions/usdt.ts b/src/tokens/definitions/usdt.ts new file mode 100644 index 0000000000..50d2553a57 --- /dev/null +++ b/src/tokens/definitions/usdt.ts @@ -0,0 +1,47 @@ +import { defineToken } from '../defineToken.js' + +/** + * [USDT](https://tether.to) (Tether USD) token, with canonical contract + * addresses across supported chains. + * + * Pass to a Client's `tokens` array, call with a chain id to produce a + * [token config](/docs/chains/tokens), or read the metadata and `addresses` + * map directly. + * + * @example + * ```ts + * import { createPublicClient, http } from 'viem' + * import { mainnet } from 'viem/chains' + * import { usdt } from 'viem/tokens' + * + * const client = createPublicClient({ + * chain: mainnet, + * tokens: [usdt], + * transport: http(), + * }) + * ``` + * + * @example + * ```ts + * import { usdt } from 'viem/tokens' + * + * usdt.addresses[1] + * // '0xdAC17F958D2ee523a2206206994597C13D831ec7' + * ``` + */ +export const usdt = /*#__PURE__*/ defineToken({ + addresses: { + 1: '0xdAC17F958D2ee523a2206206994597C13D831ec7', // mainnet + 10: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58', // optimism + 8453: '0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2', // base + 42220: '0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e', // celo + 43114: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', // avalanche + 59144: '0xA219439258ca9da29E9Cc4cE5596924745e12B93', // linea + 534352: '0xf55BEC9cafDbE8730f096Aa55dad6D22d44099Df', // scroll + }, + currency: 'USD', + decimals: 6, + name: 'Tether USD', + popular: true, + symbol: 'USDT', +}) diff --git a/src/tokens/index.test.ts b/src/tokens/index.test.ts index 4654103bbc..bea3999399 100644 --- a/src/tokens/index.test.ts +++ b/src/tokens/index.test.ts @@ -35,6 +35,7 @@ test('exports', () => { "usdc", "usdce", "usde", + "usdt", "usdt0", "usyc", "wsrusd", diff --git a/src/tokens/index.ts b/src/tokens/index.ts index 43b0c61c0f..2001d10ca6 100644 --- a/src/tokens/index.ts +++ b/src/tokens/index.ts @@ -29,6 +29,7 @@ export { usdb } from './definitions/usdb.js' export { usdc } from './definitions/usdc.js' export { usdce } from './definitions/usdce.js' export { usde } from './definitions/usde.js' +export { usdt } from './definitions/usdt.js' export { usdt0 } from './definitions/usdt0.js' export { usyc } from './definitions/usyc.js' export { wsrusd } from './definitions/wsrusd.js' diff --git a/src/tokens/sets.ts b/src/tokens/sets.ts index d439231110..4dea23b8be 100644 --- a/src/tokens/sets.ts +++ b/src/tokens/sets.ts @@ -30,6 +30,7 @@ import { usdb } from './definitions/usdb.js' import { usdc } from './definitions/usdc.js' import { usdce } from './definitions/usdce.js' import { usde } from './definitions/usde.js' +import { usdt } from './definitions/usdt.js' import { usdt0 } from './definitions/usdt0.js' import { usyc } from './definitions/usyc.js' import { wsrusd } from './definitions/wsrusd.js' @@ -65,6 +66,7 @@ const all = [ usdc, usdce, usde, + usdt, usdt0, usyc, wsrusd,