@frakt-protocol/frakt-sdk
Version:
Frakt SDK for interacting with frakt.xyz protocols
81 lines (80 loc) • 4.68 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeLoan = exports.decodedLoan = exports.decodedDeposit = exports.decodedLiquidityPool = exports.decodedCollectionInfo = exports.returnAnchorProgram = void 0;
const anchor_1 = __importDefault(require("@project-serum/anchor"));
const constants_1 = require("./constants");
const utils_1 = require("../../common/utils");
const returnAnchorProgram = (programId, provider) => (new anchor_1.default.Program(constants_1.IDL, programId, provider));
exports.returnAnchorProgram = returnAnchorProgram;
const decodedCollectionInfo = (decodedCollection, address) => ({
collectionInfoPubkey: address.toBase58(),
creator: decodedCollection.creator.toBase58(),
liquidityPool: decodedCollection.liquidityPool.toBase58(),
pricingLookupAddress: decodedCollection.pricingLookupAddress.toBase58(),
royaltyAddress: decodedCollection.royaltyAddress.toBase58(),
royaltyFeeTime: decodedCollection.royaltyFeeTime.toNumber(),
royaltyFeePrice: decodedCollection.royaltyFeePrice.toNumber(),
loanToValue: decodedCollection.loanToValue.toNumber(),
collaterizationRate: decodedCollection.collaterizationRate.toNumber(),
availableLoanTypes: Object.keys(decodedCollection.availableLoanTypes)[0],
expirationTime: decodedCollection.expirationTime.toNumber(),
});
exports.decodedCollectionInfo = decodedCollectionInfo;
const decodedLiquidityPool = (decodedLiquidityPool, address) => ({
liquidityPoolPubkey: address.toBase58(),
id: decodedLiquidityPool.id.toNumber(),
rewardInterestRateTime: decodedLiquidityPool.rewardInterestRateTime.toNumber(),
feeInterestRateTime: decodedLiquidityPool.feeInterestRateTime.toNumber(),
rewardInterestRatePrice: decodedLiquidityPool.rewardInterestRatePrice.toNumber(),
feeInterestRatePrice: decodedLiquidityPool.feeInterestRatePrice.toNumber(),
liquidityAmount: decodedLiquidityPool.liquidityAmount.toNumber(),
liqOwner: decodedLiquidityPool.liqOwner.toBase58(),
amountOfStaked: decodedLiquidityPool.amountOfStaked.toNumber(),
userRewardsAmount: decodedLiquidityPool.userRewardsAmount.toNumber(),
apr: decodedLiquidityPool.apr.toNumber(),
cumulative: decodedLiquidityPool.cumulative.toNumber(),
lastTime: decodedLiquidityPool.lastTime.toNumber(),
oldCumulative: decodedLiquidityPool.oldCumulative.toNumber(),
period: decodedLiquidityPool.period.toNumber(),
});
exports.decodedLiquidityPool = decodedLiquidityPool;
const decodedDeposit = (decodedDeposit, address) => ({
depositPubkey: address.toBase58(),
liquidityPool: decodedDeposit.liquidityPool.toBase58(),
user: decodedDeposit.user.toBase58(),
amount: decodedDeposit.amount.toNumber(),
stakedAt: decodedDeposit.stakedAt.toNumber(),
stakedAtCumulative: decodedDeposit.stakedAtCumulative.toNumber(),
});
exports.decodedDeposit = decodedDeposit;
const decodedLoan = (decodedLoan, address) => ({
loanPubkey: address.toBase58(),
user: decodedLoan.user.toBase58(),
nftMint: decodedLoan.nftMint.toBase58(),
nftUserTokenAccount: decodedLoan.nftUserTokenAccount.toBase58(),
liquidityPool: decodedLoan.liquidityPool.toBase58(),
collectionInfo: decodedLoan.collectionInfo.toBase58(),
startedAt: decodedLoan.startedAt.toNumber(),
expiredAt: new anchor_1.default.BN(decodedLoan.expiredAt || 0).toNumber(),
finishedAt: decodedLoan.finishedAt.toNumber(),
originalPrice: decodedLoan.originalPrice.toNumber(),
amountToGet: decodedLoan.amountToGet.toNumber(),
// amountToReturn: decodedLoan.amountToReturn.toNumber(),
rewardAmount: decodedLoan.rewardAmount.toNumber(),
feeAmount: decodedLoan.feeAmount.toNumber(),
royaltyAmount: decodedLoan.royaltyAmount.toNumber(),
rewardInterestRate: new anchor_1.default.BN(decodedLoan.rewardInterestRate || 0).toNumber(),
feeInterestRate: new anchor_1.default.BN(decodedLoan.feeInterestRate || 0).toNumber(),
royaltyInterestRate: new anchor_1.default.BN(decodedLoan.royaltyInterestRate || 0).toNumber(),
loanStatus: Object.keys(decodedLoan.loanStatus)[0],
loanType: Object.keys(decodedLoan.loanType)[0],
});
exports.decodedLoan = decodedLoan;
const decodeLoan = (buffer, connection, programId) => {
const program = (0, exports.returnAnchorProgram)(programId, new anchor_1.default.Provider(connection, (0, utils_1.createFakeWallet)(), anchor_1.default.Provider.defaultOptions()));
return program.coder.accounts.decode('loan', buffer);
};
exports.decodeLoan = decodeLoan;