# Get Upshift Vault Status

> Learn how to get Upshift vault status

> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

Source: https://dev.flare.network/fxrp/upshift/status

This guide demonstrates how to retrieve information about an Upshift vault, including vault configuration, LP token info, user balances, and withdrawal epoch information.

The Upshift vault is an [ERC-4626](https://eips.ethereum.org/EIPS/eip-4626) style tokenized vault compatible with [FAssets](/fassets/overview).

## Prerequisites[​](#prerequisites "Direct link to Prerequisites")

-   [Flare Hardhat Starter Kit](/network/guides/hardhat-foundry-starter-kit)
-   [Flare Network Periphery Contracts](https://www.npmjs.com/package/@flarenetwork/flare-periphery-contracts)
-   Understanding of [FAssets](/fassets/overview)

## Upshift Vault Status Script[​](#upshift-vault-status-script "Direct link to Upshift Vault Status Script")

The following script retrieves and displays information about the Upshift vault:

scripts/upshift/status.ts

```
/** * Upshift Tokenized Vault Status Script * * This script displays the current status of the vault and user balances. * */import { web3 } from "hardhat";import { formatUnits } from "ethers";import type { ITokenizedVaultInstance } from "../../typechain-types/contracts/upshift/ITokenizedVault";import type { IERC20Instance } from "../../typechain-types/@openzeppelin/contracts/token/ERC20/IERC20";const VAULT_ADDRESS = "0x24c1a47cD5e8473b64EAB2a94515a196E10C7C81";const ITokenizedVault = artifacts.require("ITokenizedVault");const IERC20 = artifacts.require("IERC20");const IFAsset = artifacts.require("IFAsset");async function printReferenceAssetInfo(vault: ITokenizedVaultInstance) {  const referenceAsset = await vault.asset();  const refAsset = await IFAsset.at(referenceAsset);  const decimals = Number(await refAsset.decimals());  const symbol = await refAsset.symbol();  console.log("\nReference Asset");  console.log(`Address: ${referenceAsset}`);  console.log(`Symbol: ${symbol}`);  console.log(`Decimals: ${decimals}`);  return { referenceAsset, refAsset, decimals, symbol };}async function printLPTokenInfo(vault: ITokenizedVaultInstance) {  const lpTokenAddress = await vault.lpTokenAddress();  const lpToken: IERC20Instance = await IERC20.at(lpTokenAddress);  console.log("\nLP Token");  console.log(`Address: ${lpTokenAddress}`);  return { lpTokenAddress, lpToken };}async function printVaultConfiguration(  vault: ITokenizedVaultInstance,  decimals: number,  symbol: string,) {  console.log("\nVault Configuration");  const withdrawalsPaused = await vault.withdrawalsPaused();  const lagDuration = await vault.lagDuration();  const withdrawalFee = await vault.withdrawalFee();  const instantRedemptionFee = await vault.instantRedemptionFee();  const maxWithdrawalAmount = await vault.maxWithdrawalAmount();  console.log(`Withdrawals Paused: ${withdrawalsPaused}`);  console.log(`Lag Duration: ${lagDuration.toString()} seconds`);  console.log(`Withdrawal Fee: ${formatUnits(withdrawalFee.toString(), 16)}%`);  console.log(    `Instant Redemption Fee: ${formatUnits(instantRedemptionFee.toString(), 16)}%`,  );  console.log(    `Max Withdrawal Amount: ${formatUnits(maxWithdrawalAmount.toString(), decimals)} ${symbol}`,  );}async function printWithdrawalEpoch(vault: ITokenizedVaultInstance) {  console.log("\nWithdrawal Epoch");  const epochInfo = await vault.getWithdrawalEpoch();  console.log(    `Year: ${epochInfo[0].toString()}, Month: ${epochInfo[1].toString()}, Day: ${epochInfo[2].toString()}`,  );  console.log(`Claimable Epoch: ${epochInfo[3].toString()}`);}async function printUserBalances(  userAddress: string,  refAsset: IERC20Instance,  lpToken: IERC20Instance,  decimals: number,  symbol: string,) {  console.log("\nUser Balances");  const refBalance = await refAsset.balanceOf(userAddress);  const lpBalance = await lpToken.balanceOf(userAddress);  console.log(    `${symbol} Balance: ${formatUnits(refBalance.toString(), decimals)}`,  );  console.log(    `LP Token Balance: ${formatUnits(lpBalance.toString(), decimals)}`,  );}async function printAllowances(  userAddress: string,  refAsset: IERC20Instance,  lpToken: IERC20Instance,  decimals: number,  symbol: string,) {  console.log("\nAllowances");  const refAllowance = await refAsset.allowance(userAddress, VAULT_ADDRESS);  const lpAllowance = await lpToken.allowance(userAddress, VAULT_ADDRESS);  console.log(    `${symbol} Allowance to Vault: ${formatUnits(refAllowance.toString(), decimals)}`,  );  console.log(    `LP Token Allowance to Vault: ${formatUnits(lpAllowance.toString(), decimals)}`,  );}async function main() {  // 1. Initialize: Get user account from Hardhat network  const accounts = await web3.eth.getAccounts();  const userAddress = accounts[0];  console.log("VAULT STATUS\n");  console.log("Vault Address:", VAULT_ADDRESS);  console.log("User Address:", userAddress);  // 2. Connect to the vault contract instance  const vault: ITokenizedVaultInstance =    await ITokenizedVault.at(VAULT_ADDRESS);  // 3. Get and print reference asset info  const { refAsset, decimals, symbol } = await printReferenceAssetInfo(vault);  // 4. Get and print LP token info  const { lpToken } = await printLPTokenInfo(vault);  // 5. Print vault configuration  await printVaultConfiguration(vault, decimals, symbol);  // 6. Print withdrawal epoch info  await printWithdrawalEpoch(vault);  // 7. Print user balances  await printUserBalances(userAddress, refAsset, lpToken, decimals, symbol);  // 8. Print allowances  await printAllowances(userAddress, refAsset, lpToken, decimals, symbol);}main().catch((error) => {  console.error(error);  process.exitCode = 1;});
```

## Script Breakdown[​](#script-breakdown "Direct link to Script Breakdown")

The `main()` function executes the following steps:

1.  **Initialize:** Gets the user account and logs the vault and user addresses.
2.  **Connect to vault:** Creates an instance of the Upshift vault contract.
3.  **Get reference asset info:** Retrieves the vault's reference asset (FXRP) address, symbol, and decimals.
4.  **Get LP token info:** Retrieves the vault's LP token address, which represents user shares.
5.  **Get vault configuration:** Fetches key vault parameters.
6.  **Get withdrawal epoch info:** Retrieves the current withdrawal epoch (year, month, day) and claimable epoch.
7.  **Get user balances:** Shows the user's reference asset balance and LP token balance.
8.  **Check allowances:** Displays the user's token allowances to the vault for both the reference asset and LP token.

## Running the Script[​](#running-the-script "Direct link to Running the Script")

To run the Upshift vault status script:

1.  Ensure you have the [Flare Hardhat Starter Kit](/network/guides/hardhat-foundry-starter-kit) set up.
2.  Update the `VAULT_ADDRESS` constant with the correct vault address for your network.
3.  Run the script using Hardhat:

```
yarn hardhat run scripts/upshift/status.ts --network coston2
```

## Output[​](#output "Direct link to Output")

The script outputs the following information about the Upshift vault:

```
VAULT STATUSVault Address: 0x24c1a47cD5e8473b64EAB2a94515a196E10C7C81User Address: 0x0d09ff7630588E05E2449aBD3dDD1D8d146bc5c2Reference AssetAddress: 0x0b6A3645c240605887a5532109323A3E12273dc7Symbol: FTestXRPDecimals: 6LP TokenAddress: 0x1234567890abcdef1234567890abcdef12345678Vault ConfigurationWithdrawals Paused: falseLag Duration: 86400 secondsWithdrawal Fee: 0.5%Instant Redemption Fee: 1.0%Max Withdrawal Amount: 1000000.0 FTestXRPWithdrawal EpochYear: 2025, Month: 1, Day: 15Claimable Epoch: 14User BalancesFTestXRP Balance: 100.0LP Token Balance: 95.5AllowancesFTestXRP Allowance to Vault: 0.0LP Token Allowance to Vault: 0.0
```

## Summary[​](#summary "Direct link to Summary")

In this guide, you learned how to retrieve status information from an Upshift vault, including vault configuration, LP token details, user balances, and withdrawal epoch information.

What's next

To continue your Upshift development journey, you can:

-   Learn more about [FAssets](/fassets/overview) and how the system works.
-   Learn how to [deposit assets into an Upshift vault](/fxrp/upshift/deposit).
-   Learn how to [instantly redeem from an Upshift vault](/fxrp/upshift/instant-redeem) for immediate liquidity.
-   Learn how to [request a redemption from an Upshift vault](/fxrp/upshift/request-redeem) for delayed liquidity.
-   Learn how to [claim assets from an Upshift vault](/fxrp/upshift/claim) after your requested redemption is claimable.
