@ace3/pluto-sdk v0.0.86
Pluto SDK
Standart Usage
Jupiter
import { createJupiterApiClient, DefaultApi } from '@jup-ag/api';
let jupiterQuoteApi: DefaultApi;
jupiterQuoteApi = createJupiterApiClient();
solana/web3.js
import { clusterApiUrl, Connection, Keypair, PublicKey } from '@solana/web3.js';
import { Wallet } from '@coral-xyz/anchor';
import {
Environment,
} from '@ace3/pluto-sdk';
let connection: Connection;
// If you want to use the default cluster, you can use `clusterApiUrl('mainnet-beta')`
connection = new Connection(clusterApiUrl('mainnet-beta'));
// If you want to use the custom RPC
connection = new Connection('https://api.mainnet-beta.solana.com');
// To Generate Keypair & Wallet
const keypair = Keypair.generate();
const wallet = new PublicKey(keypair.publicKey);
// Generate Keypair from secretKey
const keypairFromSecretKey = Keypair.fromSecretKey(
new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
);
// or
const keyPath: string = 'path/to/keypair.json';
const rawKeypair = JSON.parse(fs.readFileSync(keyPath, 'utf-8'));
keypair = Keypair.fromSecretKey(new Uint8Array(rawKeypair));
// Create anchor wallet
const anchorWallet = new Wallet(keypair);
// Environment
const env = 'staging' as Environment;
Earn
connection, env & wallet can refer to Standard Usage
Get Earn Products
const earnProducts: EarnProduct = await getEarnProducts(env);
Get Earn Information
const earnVaultAddress = getEarnVaultAddress(env, 'EARN_VAULT_USDC');
const earnProduct = await getEarnVaultInformation(connection, wallet, earnVaultAddress, env);
Get Earn Lender Information
const earnVaultAddress = getEarnVaultAddress(env, 'EARN_VAULT_USDC');
// You can use the wallet address or public key
const lenderInformation = await getEarnLenderInformation(connection,wallet , vaultAddress, env);
// or
const dummy = '22GTyb9NJmwFXL75LxEnFX4uxNnuz2vQJSt6QVDLeh89';
const lenderInformationDummy = await getEarnLenderInformation(connection,dummy , vaultAddress, env);
Join Earn
const amount = new anchor.BN(1e6);
const computeUnitLimit:number=500000;
const computeUnitPrice:number=0;
const simulateOnly:boolean=true;
const joinEarnTx = await joinEarn(connection, wallet, earnVaultAddress, amount, env, computeUnitLimit, computeUnitPrice, simulateOnly);
Exit Earn
const amount = new anchor.BN(1e6);
const minAmount = new anchor.BN(1);
const computeUnitLimit:number=500000;
const computeUnitPrice:number=0;
const simulateOnly:boolean=true;
const exitEarnTx = await exitEarn(connection, wallet, earnVaultAddress, amount, minAmount, env, computeUnitLimit, computeUnitPrice, simulateOnly);
Leverage
connection, env & wallet can refer to Standard Usage
Get Leverage Products
const leverageProducts = await getLeverageProducts(env);
Get Leverage Information
const leverageVaultInformation = await getLeverageVaultInformation(connection, wallet, leverageVaultAddress, env);
Get Leverage Obligation Information
// You can use the wallet address or public key
const obligationLeverageInformation = await getObligationLeverageInformation(connection, wallet, leverageVaultAddress, env);
// or
const dummy = '22GTyb9NJmwFXL75LxEnFX4uxNnuz2vQJSt6QVDLeh89';
const obligationLeverageInformationDummy = await getObligationLeverageInformation(connection, dummy, leverageVaultAddress, env);
Join Leverage
const joinAmount = 1e6;
const leverage = 2000; // 2x
const { route } = await addLeverageMainnet(connection, wallet, new PublicKey(leverageVaultAddress), env, joinAmount, leverage);
const addLeverageTx = await addLeverage(connection, wallet, leverageVaultAddress, new anchor.BN(joinAmount), route, leverage, env, false, false, 1000000, 1000, true);
Close Leverage
const position = 0;
const {
amountToSwap,
tokenMintA,
tokenMintB,
} = await getLeverageCloseInformation(connection, wallet, new PublicKey(leverageVaultAddress), env, position);
const route = await getSwapRouteForCloseLeverage(connection, wallet, tokenMintA, tokenMintB, amountToSwap);
const closeLeverageTx = await closeLeverage(connection, wallet, leverageVaultAddress, position, route, env, 1000000, 1000, true);
Helpers
Get Token Balance & Solana Balance
import { Connection, clusterApiUrl } from '@solana/web3.js'
import {
USDC_MAINNET_MINT,
getSolanaBalance,
getTokenBalance,
} from '@ace3/pluto-sdk'
const connection = new Connection(clusterApiUrl('mainnet-beta'))
const walletAddress: string = 'solana_wallet_address'
const usdcMintAddress: string = USDC_MAINNET_MINT.toString()
const usdcBalance = await getTokenBalance({
connection: connection,
mintAddress: usdcMintAddress,
ownerAddress: walletAddress,
})
const solanaBalance = await getSolanaBalance(connection, walletAddress)
// the output is already in human readable format
console.log({ solanaBalance, usdcBalance })
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago