diff --git a/src/tools/get_token_data.ts b/src/tools/get_token_data.ts new file mode 100644 index 0000000..d284d54 --- /dev/null +++ b/src/tools/get_token_data.ts @@ -0,0 +1,42 @@ +import { PublicKey } from "@solana/web3.js"; +import { JupiterTokenData } from "../types"; + +export async function fetchTokenDataByMint( + mint: PublicKey, +): Promise { + try { + const response = await fetch("https://tokens.jup.ag/tokens?tags=verified", { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + }); + + const data = (await response.json()) as JupiterTokenData[]; + const token = data.find( + (token: JupiterTokenData) => token.address === mint.toString(), + ); + return token; + } catch (error: any) { + throw new Error(`Error fetching token data: ${error.message}`); + } +} + +export async function fetchTokenDataByName( + name: string, +): Promise { + try { + const response = await fetch("https://tokens.jup.ag/tokens?tags=verified", { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + }); + + const data = (await response.json()) as JupiterTokenData[]; + const token = data.find((token: JupiterTokenData) => token.name === name); + return token; + } catch (error) { + throw new Error(`Error fetching token data: ${error.message}`); + } +} diff --git a/src/types/index.ts b/src/types/index.ts index e5c591e..54954c8 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -39,7 +39,6 @@ export interface PumpfunLaunchResponse { error?: string; } - /** * Lulo Account Details response format */ @@ -54,3 +53,19 @@ export interface LuloAccountDetailsResponse { minimumRate: string; }; } + +export interface JupiterTokenData { + address: string; + name: string; + symbol: string; + decimals: number; + tags: string[]; + logoURI: string; + daily_volume: number; + freeze_authority: string | null; + mint_authority: string | null; + permanent_delegate: string | null; + extensions: { + coingeckoId?: string; + }; +}