0.0.2-rc.3 • Published 2 years ago
psyfi-sdk-test-gilbert_zhuo v0.0.2-rc.3
Prerequisites
yarn
yarn add @solana/web3.js
Program IDs
Program ID | Mainnet Public Key | Devnet Public Key |
---|---|---|
PSYFI_V2 | PSYFiYqguvMXwpDooGdYV6mju92YEbFobbvW617VNcq | 95q3X9ADJv5hWt93oSaPqABPnP1rqfmjgrnto9v83LPK |
PSYSTAKE | pSystkitWgLkzprdAvraP8DSBiXwee715wiSXGJe8yr | 5LrZkBFgDkFiKEePeT2N9VuKfd2k8Rrad9PG6mKGbCRk |
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] }
}
}
0.0.2-rc.3
2 years ago
0.0.1-rc.3
2 years ago