UNPKG

@algofi/js-sdk

Version:

The official Algofi JavaScript SDK

65 lines (64 loc) 2.8 kB
import { Algodv2, Transaction } from "algosdk"; import AlgofiUser from "../../algofiUser"; import { StakingQuote } from "../../staking/v2/staking"; import GovernanceClient from "./governanceClient"; export default class VotingEscrow { governanceClient: GovernanceClient; algod: Algodv2; appId: number; totalLocked: number; totalVebank: number; assetId: number; votingEscrowMaxTimeLockSeconds: number; votingEscrowMinTimeLockSeconds: number; /** * The constructor for the voting escrow object. * * @param governanceClient - a governance client */ constructor(governanceClient: GovernanceClient); /** * Function which will update the data on the voting escrow object to match * that of the global state of the voting escrow contract. */ loadState(): Promise<void>; getLockQuote(user: AlgofiUser, lockAmount: number, lockEnd: number): [number, { [key: number]: StakingQuote; }]; getAirdropTxns(user: AlgofiUser): Promise<Transaction[]>; getLockedAirdropTxns(user: AlgofiUser): Promise<Transaction[]>; /** * Constructs a series of transactions to update a target user's vebank. * * @param userCalling - user who is calling the udpate transaction * @param userUpdating - user whose vebank is actually being updated * @returns a series of transactions to update a target user's vebank. */ getUpdateVeBankDataTxns(userCalling: AlgofiUser, userUpdating: AlgofiUser): Promise<Transaction[]>; /** * Constructs a series of transactions that lock a user's BANK. * * @param user - user who is locking * @param amount - amount they are locking * @param durationSeconds - amount of time they are locking for * @returns a series of transactions that lock a user's BANK. */ getLockTxns(user: AlgofiUser, amount: number, durationSeconds: number): Promise<Transaction[]>; /** * Constructs a series of transactions that extend a user's lock. * * @param user - user who is locking * @param durationSeconds - amount of time they are extending for * @returns a series of transactions that extend a user's lock. */ getExtendLockTxns(user: AlgofiUser, durationSeconds: number): Promise<Transaction[]>; /** * Constructs a series of transactions that increase a user's lock amount. * * @param user - user who is locking * @param amount - amount they are increasing their lock for * @returns a series of transactions that increase a user's lock amount. */ getIncreaseLockAmountTxns(user: AlgofiUser, amount: number): Promise<Transaction[]>; getClaimTxns(user: AlgofiUser): Promise<Transaction[]>; }