@perena/bankineco-sdk
v1.0.93
Published
SDK for interacting with Bankineco program on Solana.
Readme
Example Usage
Minting/Burning
import { USDC_MINT, USDC_DECIMALS, USD_STAR_DECIMALS, getBankineco, mintUsdStarFromYieldingTx, burnUsdStarForYieldingTx, fromUiAmount } from "@perena/bankineco-sdk"
import { Wallet } from "@coral-xyz/anchor";
import { PublicKey } from "@solana/web3.js";
const rpcUrl: string = ...; // TODO
const anchorWallet: Wallet = ...; // TODO
const [bankineco] = getBankineco("prod", rpcUrl, anchorWallet);
const usdcPublicKey = new PublicKey(USDC_MINT);
// Mint USD* with 1 USDC
const { transaction, lookupTables } = await mintUsdStarFromYieldingTx(bankineco, fromUiAmount(1, USDC_DECIMALS), usdcPublicKey, USDC_DECIMALS);
// Burn 1 USD* for USDC
const { transaction, lookupTables } = await burnUsdStarForYieldingTx(bankineco, fromUiAmount(1, USD_STAR_DECIMALS), usdcPublicKey, USDC_DECIMALS);Get USD* Price
import { getLatestUsdStarUiPrice } from "@perena/bankineco-sdk";
const usdStarPrice = await getLatestUsdStarUiPrice(rpcUrl, "prod");Get Quote
import {
USDC_MINT,
USDC_DECIMALS,
USD_STAR_BANK_INDEX,
USD_STAR_DECIMALS,
IDLE_VAULT_CONTRACT_INDICES,
getBankineco,
calcYieldingToBankMint,
getLatestBankMintUiPrice,
getLatestYieldingPrice,
calcBankMintToYielding,
} from "@perena/bankineco-sdk";
import { PublicKey } from "@solana/web3.js";
const [bankineco] = getBankineco("prod", rpcUrl, anchorWallet);
const yieldingMint = USDC_MINT; // Can also be legacy USD* (OLD_USD_STAR)
const yieldingMintDecimals = USDC_DECIMALS;
const bankIndex = USD_STAR_BANK_INDEX;
const bankMintDecimals = USD_STAR_DECIMALS;
const yieldingVault = bankineco.vaultPDA(
bankineco.bankPDA(bankIndex),
new PublicKey(yieldingMint),
IDLE_VAULT_CONTRACT_INDICES[yieldingMint]
);
const yieldingVaultInfo = await bankineco.pg.account.vaultGenState.fetch(
yieldingVault
);
// Calculate the amount of USD* you will get from the USDC provided
const usdStarOutput = calcYieldingToBankMint(
fromUiAmount(1, yieldingMintDecimals),
await getLatestBankMintUiPrice(bankineco, bankIndex),
await getLatestYieldingPrice(bankineco, bankineco.oraclePDA(yieldingVault)),
yieldingVaultInfo.config.mintingFeeBps,
bankMintDecimals,
yieldingMintDecimals
).amount;
// Calculate the amount of USDC you will receive from the USD* amount provided
const usdcOutput = calcBankMintToYielding(
fromUiAmount(1, bankMintDecimals),
await getLatestBankMintUiPrice(bankineco, bankIndex),
await getLatestYieldingPrice(bankineco, bankineco.oraclePDA(yieldingVault)),
yieldingVaultInfo.config.burningFeeBps,
bankMintDecimals,
yieldingMintDecimals
).amount;