@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 })
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
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
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
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago