UNPKG

test-raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

90 lines (82 loc) 2.15 kB
import { Connection, PublicKey } from "@solana/web3.js"; import { MintLayout, RawMint, TOKEN_PROGRAM_ID } from "@solana/spl-token"; import { Token, TokenAmount } from "@/module"; import { BigNumberish } from "@/common/bignumber"; import { TokenInfo } from "./type"; import { SOL_INFO, TOKEN_WSOL } from "./constant"; import { ApiV3Token } from "@/api"; export const parseTokenInfo = async ({ connection, mint, }: { connection: Connection; mint: PublicKey | string; }): Promise<RawMint | undefined> => { const accountData = await connection.getAccountInfo(new PublicKey(mint)); if (!accountData || accountData.data.length !== MintLayout.span) return; const tokenInfo = MintLayout.decode(accountData.data); return tokenInfo; }; export const toTokenInfo = ({ mint, decimals, programId = TOKEN_PROGRAM_ID, logoURI = "", priority = 3, }: { mint: PublicKey; decimals: number; programId?: PublicKey | string; priority?: number; logoURI?: string; }): TokenInfo => { const pubStr = mint.toBase58().substring(0, 6); return { address: mint.toBase58(), decimals, symbol: pubStr, logoURI, extensions: {}, chainId: 101, programId: programId.toString(), name: pubStr, tags: [], priority, }; }; export const toToken = (props: Omit<TokenInfo, "priority">): Token => new Token({ mint: props.address, decimals: props.decimals, symbol: props.symbol, name: props.name, }); export const toTokenAmount = ({ amount, isRaw, name, ...props }: Omit<TokenInfo, "priority"> & { amount: BigNumberish; isRaw?: boolean; name?: string; }): TokenAmount => new TokenAmount( new Token({ mint: props.address, decimals: props.decimals, symbol: props.symbol, name, }), amount, isRaw, name, ); export function solToWSolToken<T extends ApiV3Token | TokenInfo>(token: T): T { if (token.address === SOL_INFO.address) return TOKEN_WSOL as T; return token; } export function wSolToSolToken<T extends ApiV3Token | TokenInfo>(token: T): T { if (token.address === TOKEN_WSOL.address) return SOL_INFO as T; return token; }