@switchxfi/alm-sdk
v1.2.0
Published
SwitchX ALM SDK
Readme
SwitchX ALM SDK
This SDK provides utilities for interacting with SwitchX ALM vaults, designed to simplify integration into your project.
📦 Installation
Using npm:
npm install @switchxfi/alm-sdkor yarn:
yarn add @switchxfi/alm-sdk📚 Vault GET Methods
getVaultsByPool
Get a list of vault addresses associated with a specific pool
const vaultAddresses: string[] = await getVaultsByPool(poolAddress, chainId);getTotalAmounts
Returns the total number of both tokens stored in the vault
const [totalAmount0, totalAmount1] = await getTotalAmounts(
vaultAddress,
provider,
true,
token0.decimals,
token1.decimals
);getTotalSupply
Returns the total number of vault shares
const totalSupply = await getTotalSupply(vaultAddress, provider)👤 User Data in Vaults
getUserAmounts
Returns the user's token balances and share count in the vault. If the raw flag is set, values are returned as BigNumbers
const [userAmount0, userAmount1, shares] = await getUserAmounts(
account,
vaultAddress,
provider,
token0.decimals,
token1.decimals,
true
);calculateUserDepositTokenPNL
Calculates the user’s PNL and ROI in terms of the deposit token
const { pnl, roi } = await calculateUserDepositTokenPNL(
account,
vaultAddress,
userAmount0.toString(),
userAmount1.toString(),
token0.decimals,
token1.decimals,
provider
);🚀 Transactions
approveDepositToken
Approves a token for deposit. Must be called before using the deposit() method. The amount can be a string or number in major units.
const tx = await approveDepositToken(
accountAddress,
0, // token idx can be 0 or 1
vaultAddress,
provider,
amount // (optional)
);deposit/depositNativeToken
Performs a deposit into the vault. The amount0 and amount1 parameters represent the amounts of each token in major units.
if (useNativeToken) {
const tx = await depositNativeToken(
account,
vault.allowTokenA ? amount : "0",
vault.allowTokenB ? amount : "0",
vaultAddress,
provider
);
} else {
const tx = await deposit(
account,
vault.allowTokenA ? amount : "0",
vault.allowTokenB ? amount : "0",
vaultAddress,
provider
);
}withdraw/withdrawNativeToken
Withdraws a specified number of shares from the vault, returning both underlying tokens to the user. The share amount should be a string or number in major units.
const percentMultiplier = 1; // 100%
const shareToWithdraw = Number(userShare) * percentMultiplier;
const slippage = 1 // 1%
if (useNativeToken) {
const tx = await withdrawNativeToken(
account,
shareToWithdraw,
vaultAddress,
provider,
slippage
);
} else {
const tx = await withdrawWithSlippage(
account,
shareToWithdraw,
vaultAddress,
provider,
slippage
);
}