From fe53b0cbd95138eb4a009367ff4cc405e5cff04b Mon Sep 17 00:00:00 2001 From: Arihant Bansal <17180950+arihantbansal@users.noreply.github.com> Date: Fri, 13 Dec 2024 16:06:52 +0530 Subject: [PATCH] feat: add jup list fetch --- src/tools/get_token_data.ts | 42 +++++++++++++++++++++++++++++++++++++ src/types/index.ts | 17 ++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/tools/get_token_data.ts 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; + }; +}