pumpdotfun-sdk-repumped
Version:
Pumpfun SDK — create, buy, sell tokens with support for Jito bundles and multiple relayer integrations. Rebuilt and fixed pumpdotfun-sdk.
1 lines • 7.66 kB
Source Map (JSON)
{"version":3,"file":"TokenModule.mjs","sources":["../../../../src/modules/TokenModule.ts"],"sourcesContent":["import {\r\n createAssociatedTokenAccountInstruction,\r\n getAccount,\r\n getAssociatedTokenAddress,\r\n} from \"@solana/spl-token\";\r\nimport { PublicKey, Transaction, Commitment } from \"@solana/web3.js\";\r\nimport { DEFAULT_COMMITMENT } from \"../pumpFun.consts.js\";\r\nimport { CreateTokenMetadata } from \"../pumpFun.types.js\";\r\nimport { PumpFunSDK } from \"../PumpFunSDK.js\";\r\nimport { BondingCurveAccount } from \"../BondingCurveAccount.js\";\r\nimport { GlobalAccount } from \"../globalAccount.js\";\r\n\r\nexport class TokenModule {\r\n constructor(private sdk: PumpFunSDK) {}\r\n\r\n async createTokenMetadata(create: CreateTokenMetadata) {\r\n // Validate file\r\n if (!(create.file instanceof Blob)) {\r\n throw new Error(\"File must be a Blob or File object\");\r\n }\r\n\r\n let formData = new FormData();\r\n formData.append(\"file\", create.file, \"image.png\"); // Add filename\r\n formData.append(\"name\", create.name);\r\n formData.append(\"symbol\", create.symbol);\r\n formData.append(\"description\", create.description);\r\n formData.append(\"twitter\", create.twitter || \"\");\r\n formData.append(\"telegram\", create.telegram || \"\");\r\n formData.append(\"website\", create.website || \"\");\r\n formData.append(\"showName\", \"true\");\r\n\r\n try {\r\n const request = await fetch(\"https://pump.fun/api/ipfs\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n },\r\n body: formData,\r\n credentials: \"same-origin\",\r\n });\r\n\r\n if (request.status === 500) {\r\n // Try to get more error details\r\n const errorText = await request.text();\r\n throw new Error(\r\n `Server error (500): ${errorText || \"No error details available\"}`\r\n );\r\n }\r\n\r\n if (!request.ok) {\r\n throw new Error(`HTTP error! status: ${request.status}`);\r\n }\r\n\r\n const responseText = await request.text();\r\n if (!responseText) {\r\n throw new Error(\"Empty response received from server\");\r\n }\r\n\r\n try {\r\n return JSON.parse(responseText);\r\n } catch (e) {\r\n throw new Error(`Invalid JSON response: ${responseText}`);\r\n }\r\n } catch (error) {\r\n console.error(\"Error in createTokenMetadata:\", error);\r\n throw error;\r\n }\r\n }\r\n\r\n async createAssociatedTokenAccountIfNeeded(\r\n payer: PublicKey,\r\n owner: PublicKey,\r\n mint: PublicKey,\r\n transaction: Transaction,\r\n commitment: Commitment = DEFAULT_COMMITMENT\r\n ): Promise<PublicKey> {\r\n const associatedTokenAccount = await getAssociatedTokenAddress(\r\n mint,\r\n owner,\r\n false\r\n );\r\n\r\n try {\r\n await getAccount(this.sdk.connection, associatedTokenAccount, commitment);\r\n } catch (e) {\r\n transaction.add(\r\n createAssociatedTokenAccountInstruction(\r\n payer,\r\n associatedTokenAccount,\r\n owner,\r\n mint\r\n )\r\n );\r\n }\r\n\r\n return associatedTokenAccount;\r\n }\r\n\r\n async getBondingCurveAccount(\r\n mint: PublicKey,\r\n commitment: Commitment = DEFAULT_COMMITMENT\r\n ) {\r\n const tokenAccount = await this.sdk.connection.getAccountInfo(\r\n this.sdk.pda.getBondingCurvePDA(mint),\r\n commitment\r\n );\r\n if (!tokenAccount) {\r\n return null;\r\n }\r\n return BondingCurveAccount.fromBuffer(tokenAccount!.data);\r\n }\r\n\r\n async getGlobalAccount(commitment: Commitment = DEFAULT_COMMITMENT) {\r\n const globalAccountPDA = this.sdk.pda.getGlobalAccountPda();\r\n\r\n const tokenAccount = await this.sdk.connection.getAccountInfo(\r\n globalAccountPDA,\r\n commitment\r\n );\r\n\r\n return GlobalAccount.fromBuffer(tokenAccount!.data);\r\n }\r\n\r\n async getBondingCurveCreator(\r\n bondingCurvePDA: PublicKey,\r\n commitment: Commitment = DEFAULT_COMMITMENT\r\n ): Promise<PublicKey> {\r\n const bondingAccountInfo = await this.sdk.connection.getAccountInfo(\r\n bondingCurvePDA,\r\n commitment\r\n );\r\n if (!bondingAccountInfo) {\r\n throw new Error(\"Bonding curve account not found\");\r\n }\r\n\r\n // Creator is at offset 49 (after 8 bytes discriminator, 5 u64 fields, and 1 byte boolean)\r\n const creatorBytes = bondingAccountInfo.data.subarray(49, 49 + 32);\r\n return new PublicKey(creatorBytes);\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}