UNPKG

@frakt-protocol/frakt-sdk

Version:

Frakt SDK for interacting with frakt.xyz protocols

81 lines (80 loc) 4.68 kB
"use strict"; 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;