@lightprotocol/jup-api-adapter
v0.1.6
Published
Jupiter API wrapper with support for compressed tokens
Downloads
503
Readme
Jupiter Compression SDK
A wrapper for @jup-ag/api that adds Compressed Token support.
Installation
yarn add @lightprotocol/jup-api-adapter
Usage
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.
Overview
Extends DefaultApi
class with endpoints:
quoteGetCompressed
quoteGetRawCompressed
swapInstructionsPostCompressed
swapInstructionsPostRawCompressed
swapPostCompressed
swapPostRawCompressed
Constraints when using one of the compression endpoints
swapMode
must beExactIn
wrapAndUnwrapSol
must betrue
skipUserAccountsRpcCalls
must befalse
asLegacyTransaction
must befalse
useTokenLedger
must befalse
allowOptimizedWrappedSolTokenAccount
must befalse
dynamicComputeUnitLimit
must befalse
prioritizationFeeLamports
not supported yet (usecomputeUnitPriceMicroLamports
instead)compressionMode
must be one ofDecompressInput
,DecompressAndCompress
,CompressOutput
.Instructions
- mutates
ComputeBudgetInstructions
to reflect higher cu usage. (PrioritizationFeeLamports
are not supported yet. UsecomputeUnitPriceMicroLamports
instead.) - extends
addressLookupTableAddresses
with a lookup table for Light Protocol. - extends
setupInstructions
andcloseInstructions
withgetCreateAtaInstructions
(tokenIn, tokenOut)getDecompressionSetupInstructions
(tokenIn, tokenOut)getCleanupInstructions
(tokenIn, tokenOut)
- mutates
Notes
- No safeguards added. Use at your own risk.