Skip to content

A wrapper for @jup-ag/api that adds Compressed Token support.

Notifications You must be signed in to change notification settings

Lightprotocol/jup-api-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jupiter API ZK Compression Adapter

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

Swap params for compression endpoints

  • swapMode is ExactIn

  • wrapAndUnwrapSol must be true

  • skipUserAccountsRpcCalls must be false

  • asLegacyTransaction must be false

  • useTokenLedger must be false

  • allowOptimizedWrappedSolTokenAccount must be false

  • dynamicComputeUnitLimit must be false

  • prioritizationFeeLamports not supported yet (use computeUnitPriceMicroLamports instead)

  • Instructions

    • mutates ComputeBudgetInstructions to reflect higher cu usage.
    • extends addressLookupTableAddresses with a lookup table for Light Protocol.
    • extends setupInstructions and closeInstructions with
      • getCreateAtaInstructions (tokenIn, tokenOut)
      • getDecompressionSetupInstructions (tokenIn, tokenOut)
      • getCleanupInstructions (tokenIn, tokenOut)

Notes

  • This is in alpha. If you find bugs, report them on Discord or via Telegram
  • No safeguards added. Use at your own risk.

About

A wrapper for @jup-ag/api that adds Compressed Token support.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published