import { EthApi } from "@joincivil/ethapi"; import { BigNumber } from "@joincivil/typescript-types"; import { Observable } from "rxjs"; import { EthAddress } from "../../types"; import { BaseWrapper } from "../basewrapper"; import { CVLTokenContract } from "../generated/wrappers/c_v_l_token"; import { MultisigProxyTransaction } from "../multisig/basemultisigproxy"; /** * CVLToken allows user to interface with token. * * NOTE: If instantiated with a multisig wallet, all transactions are proxied through multisig, and all functions default to multisig address as the "current" user. */ export declare class CVLToken extends BaseWrapper { static atUntrusted(web3wrapper: EthApi, address: EthAddress, multisigAddress?: EthAddress): Promise; static singletonTrusted(web3wrapper: EthApi, multisigAddress?: EthAddress): Promise; /** If instantiated with `multisigAddress` undefined, proxy will send transactions directly to the contract instance. */ private multisigProxy; private tokenController; private constructor(); /** * Contract Transactions */ /** * Approve spender to spend certain amount of tokens on user's behalf * @param spender address to approve as spender of tokens * @param numTokens number of tokens to approve for spender to spend on user's behalf */ approveSpender(spender: EthAddress, numTokens: BigNumber): Promise; balanceUpdate(fromBlock: number | undefined, user: EthAddress): Observable; /** * Contract Getters */ /** * Get number of approved tokens for spender * @param spender spender to check approved tokens for * @param tokenOwner address whose tokens we check approval for (defaults to current user, or multisig if instantiated with multisig) */ getApprovedTokensForSpender(spender: EthAddress, tokenOwner?: EthAddress): Promise; /** * Check the token balance of an address * @param tokenOwner address to check balance of (defaults to current user, or multisig if instantiated with multisig) */ getBalance(tokenOwner?: EthAddress): Promise; isTransferAllowed(to: EthAddress, from?: EthAddress): Promise; isCivilian(user: EthAddress): Promise; isUnlocked(user: EthAddress): Promise; /** * Transfer tokens from user or multisig to another wallet * @param recipient address to send tokens to * @param numTokens number of tokens to send */ transfer(recipient: EthAddress, numTokens: BigNumber): Promise; transferToSelf(numTokens: BigNumber): Promise; private getDefaultCurrentAddress; }