A wrapper for @jup-ag/api that adds Compressed Token support.
yarn add @lightprotocol/jup-api-adapter
import { VersionedTransaction } from '@solana/web3.js';
import { createRpc } from '@lightprotocol/stateless.js';
import { createJupiterApiAdapterClient, TokenCompressionMode } from '@lightprotocol/jup-api-adapter';
// Create RPC connection with compression support
const connection = createRpc(RPC_URL, COMPRESSION_URL, COMPRESSION_URL);
// Initialize Jupiter API Adapter client
const jupiterApi = await createJupiterApiAdapterClient(connection);
// Get quote
const quote = await jupiterApi.quoteGetCompressed({
inputMint: INPUT_MINT.toBase58(),
outputMint: OUTPUT_MINT.toBase58(),
amount: AMOUNT,
onlyDirectRoutes: true,
slippageBps: 500,
}, TokenCompressionMode.DecompressInput);
// Get swap transaction
const swapResponse = await jupiterApi.swapPostCompressed({
swapRequest: {
userPublicKey: wallet.publicKey.toBase58(),
quoteResponse: quote,
}
}, { compressionMode: TokenCompressionMode.DecompressInput });
const tx = VersionedTransaction.deserialize(Buffer.from(swapResponse.swapTransaction, 'base64'));
tx.sign([wallet]);
// send ...
For more code examples, see this repo.
Extends DefaultApi
class with endpoints:
quoteGetCompressed
quoteGetRawCompressed
swapInstructionsPostCompressed
swapInstructionsPostRawCompressed
swapPostCompressed
swapPostRawCompressed
-
swapMode
isExactIn
-
wrapAndUnwrapSol
must betrue
-
skipUserAccountsRpcCalls
must befalse
-
asLegacyTransaction
must befalse
-
useTokenLedger
must befalse
-
allowOptimizedWrappedSolTokenAccount
must befalse
-
dynamicComputeUnitLimit
must befalse
-
prioritizationFeeLamports
not supported yet (usecomputeUnitPriceMicroLamports
instead) -
Instructions
- mutates
ComputeBudgetInstructions
to reflect higher cu usage. - extends
addressLookupTableAddresses
with a lookup table for Light Protocol. - extends
setupInstructions
andcloseInstructions
withgetCreateAtaInstructions
(tokenIn, tokenOut)getDecompressionSetupInstructions
(tokenIn, tokenOut)getCleanupInstructions
(tokenIn, tokenOut)
- mutates
- This is in alpha. If you find bugs, report them on Discord or via Telegram
- No safeguards added. Use at your own risk.