0.0.2-rc.3 • Published 2 years ago

psyfi-sdk-test-gilbert_zhuo v0.0.2-rc.3

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

Prerequisites

yarn

yarn add @solana/web3.js

Program IDs

Program IDMainnet Public KeyDevnet Public Key
PSYFI_V2PSYFiYqguvMXwpDooGdYV6mju92YEbFobbvW617VNcq95q3X9ADJv5hWt93oSaPqABPnP1rqfmjgrnto9v83LPK
PSYSTAKEpSystkitWgLkzprdAvraP8DSBiXwee715wiSXGJe8yr5LrZkBFgDkFiKEePeT2N9VuKfd2k8Rrad9PG6mKGbCRk

Installation

yarn add psyfi-sdk

Usage

Vaults Information

const getVaultdata();

Example

import { getVaultData } from "psyfi-sdk";

const data = await getVaultData();
RESPONSE OBJECT
{
   "vaults":{
      "btc-put":{
         "name":"BTC SECURED PUT",
         "staking":{
            "metadata":{
               "usdValuePerVaultToken":0.8799150861566609
            },
            "stakePoolKey":"7waRUqnzcLopivSH3FCBrTPXij63XY4qGnFJ99XjVRaB",
            "stakingApr":[
               13.623659938287103,
               15.667208929030169,
            ],
            "poolRewards":[
               {
                  "rewardTokensPerWeek":1470,
                  "multiplier":1,
                  "metadata":{
                     "usdValuePerRewardToken":1.051,
                     "rewardInUsdPerYearPerRewardUnit":1.1987663908366946e-7,
                     "rewardPoolApr":[
                        13.623659938287103,
                        15.667208929030169,
                     ]
                  },
                  "rewardPoolKey":"33LYcoXVPWzvj4jpihfX5bLMw4irfx614jGoeENF3VTa",
                  "rewardMintAddress":"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt",
                  "tokenSymbol":"SRM",
                  "poolId":1
               }
            ]
         },
         "deposits":{
            "current":528072.232153,
            "max":850000
         },
         "strategyType":1,
         "accounts":{
            "optionsUnderlyingMint":"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E",
            "collateralAssetMint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
            "feeTokenAccount":"EfNdRWbRU6NpNd3KZq85PDsdTdsp1SBiG1S6Pebo9yA2",
            "vaultOwnershipTokenMint":"Df312h5rL4LxGBmUGvRxD1F5gTUwVbsezNKYMRQteeg4",
            "vaultAddress":"792ELQdQ6nZBSBrKjRiJXxH1ZFpNjHktnpMdp2auyXMF",
            "pythPriceOracle":"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU"
         },
         "status":{
            "optionsActive":true,
            "currentEpoch":9,
            "nextOptionMintTime":1659083400,
            "nextEpochStartTime":1659081600,
            "isDeprecated":false
         },
         "visibility":0,
         "selectedStrike":18500,
         "fees":{
            "performance":10,
            "withdrawal":0.1
         },
         "id":"btc-put",
         "version":2,
         "valuePerVaultToken":0.8803702375694843,
         "apy":{
            "stakingApy":0,
            "weightedApy":{
               "averageSaleYield":0.24619228322716405,
               "targetDelta":0.05,
               "epochsCounted":5,
               "apyAfterFees":-23.213719793853716,
               "apyBeforeFees":-22.171773312887854,
               "averageHistoricalLoss":13.783876048900002
            },
            "currentEpochApy":13.968757687620625,
            "movingAverageApy":{
               "epochsCounted":4,
               "averageEpochYield":0.28259978993747026,
               "apyAfterFees":14.120964917447054,
               "apyBeforeFees":15.805820152465122
            }
         },
         "vaultHistory":[
            {
               "epoch":3,
               "endingValuePerVaultToken":0.862161239511,
               "saleAmount":429.3282,
               "percentageLossOnCollateral":13.997020408163266,
               "epochHistoryKey":"EfsEWATN4LL7hhMedinKxaayH4rPGzK6WhKDxMmYGYmT",
               "startDate":1654848000,
               "optionMinted":"17 JUN EXP - BTC PUT STRIKE $24500",
               "priceAtExpiry":21070.73,
               "strikePrice":24500,
               "overallYield":-13.783876048900002,
               "saleYield":0.21314435926326425
            },
            {
               "strikePrice":15000,
               "saleAmount":2437.82448,
               "optionMinted":"24 JUN EXP - BTC PUT STRIKE $15000",
               "priceAtExpiry":20911.0525,
               "epoch":4,
               "startDate":1655452800,
               "overallYield":0.8392309928133335,
               "saleYield":0.8392309928133335,
               "endingValuePerVaultToken":0.869396763841,
               "percentageLossOnCollateral":0,
               "epochHistoryKey":"68u71YZfA3msFjvRwrAKV7eC2JQstevzYyGjGs7MAWgD"
            }
         ]
      },

Retrieve wallet positions for all vaults

const getUserWalletPositionAllVaults = async (
    userWallet: PublicKey,
    connection: Connection,
    isMainnet = true
)

Example

import { getUserWalletPositionAllVaults } from "psyfi-sdk";

const userWallet = new PublicKey(
   "Fbhqzu1S9x9dik7Sjxt3iWZbUXUU2WSfFyeqGcKuBoR7"
);
const connection = new Connection("https://ssc-dao.genesysgo.net/");
const userPosition = await getUserWalletPositionAllVaults(
   userWallet,
   connection,
);
RESPONSE OBJECT
    [
    scnSOL-Collaterized SOL COVERED CALL': {
        totalUserVaultTokens: 0,
        claimableRewards: {
            SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt: {
                totalClaimableAmount: 0.186569,
                tokenSymbol: 'SRM',
                epochsToClaim: { '1': [Array] }
            }
        },
        vaultTokensInWallet: 0,
        vaultTokensStaked: 0,
        vaultTokenDecimals: 9,
        pendingCollateralAssetDeposits: 0
    },
    'stSOL COVERED CALL': {
        totalUserVaultTokens: 8403485,
        claimableRewards: {
            SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt: {
                totalClaimableAmount: 0.186569,
                tokenSymbol: 'SRM',
                epochsToClaim: { '1': [Array] }
            }
        },
        vaultTokensInWallet: 0,
        vaultTokensStaked: 8403485,
        vaultTokenDecimals: 9,
        pendingCollateralAssetDeposits: 0
    },
    'SOL COVERED CALL': {
        totalUserVaultTokens: 96610959,
        claimableRewards: { SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt: [Object] },
        vaultTokensInWallet: 0,
        vaultTokensStaked: 96610959,
        vaultTokenDecimals: 9,
        pendingCollateralAssetDeposits: 0
    }
]

Retrieve wallet position for a single vault

const getUserWalletPosition = async (
    walletAddress: PublicKey,
    vaultAccount: PublicKey,
    connection: Connection,
    stakePool: PublicKey = null,
    VaultPoolReward: any = null,
    isMainnet = true
)

Example

import { getUserWalletPosition } from "psyfi-sdk-test-gilbert_zhuo";
import { Connection, PublicKey } from "@solana/web3.js";

const userWallet = new PublicKey(
  "Fbhqzu1S9x9dik7Sjxt3iWZbUXUU2WSfFyeqGcKuBoR7"
);
const connection = new Connection("https://ssc-dao.genesysgo.net/");

const vaultAddress = new PublicKey(
  "6sWvoyGaHngg95ZxDZC6b2z4VScBbgvebPDXtnwvQXMT"
);
const stakePoolKey = new PublicKey(
  "HMetsM5vjgVwrRXM8evJtcR4we6oceiY3tZTGrhwFvL4"
);

const rewardPoolKey = new PublicKey(
    "3gxncdn6DW6YFheyH9EBoCFDSkkKgGrUyYJLwbavDTgH"
);

const userPosition = await getUserWalletPosition(
  userWallet,
  vaultAddress,
  connection,
  stakePoolKey,
  rewardPoolKey,
  true
);
RESPONSE OBJECT
 {
    totalUserVaultTokens: 8403485,
    claimableRewards: {
        SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt: {
            totalClaimableAmount: 0.186569,
            tokenSymbol: 'SRM',
            epochsToClaim: { '1': [Array] }
        }
    },
    vaultTokensInWallet: 0,
    vaultTokensStaked: 8403485,
    vaultTokenDecimals: 9,
    pendingCollateralAssetDeposits: 0
}

Retrieve user stake positions

const getUserStakePosition = async (
  psyStakeProgramKey: PublicKey,
  walletAddress: PublicKey,
  stakePool: PublicKey,
  connection: Connection
)

Example

RESPONSE OBJECT
{
  stakePool: PublicKey(d8e78c3f04077d1df28af446e04940f608d735cc0ed1a02fcbb25b2a8c33ee3e),
  recordOwner: PublicKey(d8e78c3f04077d1df28af446e04940f608d735cc0ed1a02fcbb25b2a8c33ee3e),
  stakedAmount: 0,
  rewardUnits: 0,
  lockUpExpiry: 0,
  lastEpochClaimedVec: [0,0],
  recordBump: 253
}

Retrieve user reward claims

const fetchRewardClaims = async (
  rewardToken: TokenInfo,
  rewardPoolKeyString: string,
  poolId: number,
  epochRewardDecimals: number,
  stakingRecord: StakingRecord,
  stakePool: StakePool,
  claimableRewards: ClaimableRewards,
  program: PublicKey,
  connection: Connection
)
RESPONSE OBJECT
{
  SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt: {
    totalClaimableAmount: 0.186569,
    tokenSymbol: 'SRM',
    epochsToClaim: { '1': [Array] }
  }
}