@q-dev/q-js-sdk
Version:
Typescript Library to interact with Q System Contracts
152 lines (151 loc) • 6.92 kB
TypeScript
import type { ContractTransaction, BigNumberish } from 'ethers';
import { QVault } from '../../ethers-contracts/QVault';
import { VotingLockInfo, QNonPayableTx, QPayableTx, StakeDelegationInfo, TimeLockEntry, QVaultBalanceDetails, SignerOrProvider } from '../../types';
import { CompoundRateKeeperInstance } from '../common/CompoundRateKeeperInstance';
import { ERC20HelperInstance } from '../ERC20HelperInstance';
import { VotingWeightProxyInstance } from '../governance/VotingWeightProxyInstance';
/**
* QVault instance to interact with QVault contract.
* See [onchain documentation](@system-contracts-repo/@network/QVault/) for more details.
* An instance of this class for a deployed network can be obtained via {@link ContractRegistryInstance.qVault}
*/
export declare class QVaultInstance extends ERC20HelperInstance<QVault> {
static readonly registryKey = "tokeneconomics.qVault";
static readonly abi = "QVault.json";
private c;
/**
* VotingWeightProxy instance. Used by local methods.
*/
votingWeightProxy: VotingWeightProxyInstance;
constructor(signerOrProvider: SignerOrProvider, address: string);
/**
* [External documentation](@system-contracts-repo/@network/QVault/#aggregatednormalizedbalance)
*/
aggregatedNormalizedBalance(): Promise<string>;
/** @deprecated use getCompoundRateKeeper */
compoundRateKeeper(): Promise<string>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#getcompoundratekeeper)
*/
getCompoundRateKeeper(): Promise<CompoundRateKeeperInstance>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#deposit)
*/
deposit(txOptions?: QPayableTx): Promise<ContractTransaction>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#lock)
*/
lock(amount: string, txOptions?: QNonPayableTx): Promise<ContractTransaction>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#announceunlock)
*/
announceUnlock(amount: string, txOptions?: QNonPayableTx): Promise<ContractTransaction>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#unlock)
*/
unlock(amount: string, txOptions?: QNonPayableTx): Promise<ContractTransaction>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#withdraw)
*/
withdraw(amount: string, txOptions?: QNonPayableTx): Promise<ContractTransaction>;
/**
* Withdraw all available amount.
* Use {@link QVaultInstance.getReadyToWithdrawBalance}
* @param user account.
* @returns Transaction receipt.
*/
withdrawEntireBalance(user: string): Promise<ContractTransaction>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#updatecompoundrate)
*/
updateCompoundRate(txOptions?: QNonPayableTx): Promise<ContractTransaction>;
/** @deprecated compound rate has to be updated via ValidationRewardPoolsInstance */
updateValidatorsCompoundRate(_validator: string, _txOptions?: QNonPayableTx): Promise<ContractTransaction>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#delegatestake)
*/
delegateStake(delegatedTo: string[], stakes: string[], txOptions?: QNonPayableTx): Promise<ContractTransaction>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#transferandcall)
*/
transferAndCall(to: string, value: BigNumberish, data: string | number[], txOptions?: QNonPayableTx): Promise<ContractTransaction>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#withdrawto)
*/
withdrawTo(recipient: string, amount: BigNumberish, txOptions?: QNonPayableTx): Promise<ContractTransaction>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#depositto)
*/
depositTo(recipient: string, txOptions?: QPayableTx): Promise<ContractTransaction>;
/**
* Token amount that can be withdrawn at current moment.
* This method takes into account all locks of QVault
* @param user account
* @returns Withdrawable amount
*/
getReadyToWithdrawBalance(user: string): Promise<string>;
/**
* Calculate total delegation stake for chosen account.
* @param user account.
* @returns total delegated stake.
*/
getTotalDelegatedStake(user: string): Promise<string>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#getdelegationslist)
*/
getDelegationsList(user: string): Promise<StakeDelegationInfo[]>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#getnormalizedbalance)
*/
getNormalizedBalance(userAddress: string): Promise<string>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#claimstakedelegatorreward)
*/
claimStakeDelegatorReward(txOptions?: QNonPayableTx): Promise<ContractTransaction>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#depositfrompool)
*/
depositFromPool(txOptions?: QPayableTx): Promise<ContractTransaction>;
/** @deprecated user balance has to be received via balanceOf */
getUserBalance(user: string): Promise<string>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#getbalancedetails)
*/
getBalanceDetails(user: string): Promise<QVaultBalanceDetails>;
/**
* [External documentation](@system-contracts-repo/@network/QVault/#getlockinfo)
*/
getLockInfo(user: string): Promise<VotingLockInfo>;
/**
* Calculate available to delegate amount
* @param user account
* @returns delegatable amount
*/
getDelegatableAmount(user: string): Promise<string>;
/**
* Calculate available to lock amount
* @param user account
* @returns lockable amount
*/
getLockableAmount(user: string): Promise<string>;
/**
* {@link TimeLockHelperInstance.depositOnBehalfOf | Internal documentation}
*/
depositOnBehalfOf(account: string, start: BigNumberish, end: BigNumberish, txOptions?: QPayableTx): Promise<ContractTransaction>;
/**
* {@link TimeLockHelperInstance.getTimeLocks | Internal documentation}
*/
getTimeLocks(account: string): Promise<TimeLockEntry[]>;
/**
* {@link TimeLockHelperInstance.getMinimumBalance | Internal documentation}
*/
getMinimumBalance(account: string, timestamp: BigNumberish): Promise<string>;
/**
* {@link TimeLockHelperInstance.purgeTimeLocks | Internal documentation}
*/
purgeTimeLocks(account: string, txOptions?: QNonPayableTx): Promise<ContractTransaction>;
}
/** @deprecated use QVaultInstance instead */
export declare type PiggyBankInstance = QVaultInstance;
/** @deprecated use QVault instead */
export declare type PiggyBank = QVault;