import { Address } from "../commonTypes";
import { ContractWrapperBase } from "../contractWrapperBase";
import { ArcTransactionResult, IContractWrapperFactory } from "../iContractWrapperBase";
import { BigNumber } from "bignumber.js";
import { ContractWrapperFactory } from "../contractWrapperFactory";
import { TxGeneratingFunctionOptions } from "../transactionService";
import { EventFetcherFactory } from "../web3EventService";
export declare class StandardTokenWrapper extends ContractWrapperBase {
    name: string;
    friendlyName: string;
    factory: IContractWrapperFactory<StandardTokenWrapper>;
    Approval: EventFetcherFactory<ApprovalEventResult>;
    /**
     * Approve transfer of tokens by msg.sender (or `onBehalfOf`if given)
     * from the given "spender".
     * @param options
     */
    approve(options: StandardTokenApproveOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    protected hydrated(): void;
}
/**
 * defined just to add good type checking
 */
export declare class StandardTokenFactoryType extends ContractWrapperFactory<StandardTokenWrapper> {
    new(initialAccount: Address, initialBalance: BigNumber): Promise<StandardTokenWrapper>;
}
export declare const StandardTokenFactory: StandardTokenFactoryType;
export interface StandardTokenParams {
    initialAccount: Address;
    initialBalance: BigNumber;
}
export interface StandardTokenApproveOptions extends TxGeneratingFunctionOptions {
    /**
     * Amount to approve to transfer.
     */
    amount: BigNumber | string;
    /**
     * Optional account from which the tokens will be transferred.
     * Default is msg.sender.
     */
    onBehalfOf?: Address;
    /**
     * Approve for this account to perform the token transfer.
     * indexed
     */
    spender: Address;
}
export interface ApprovalEventResult {
    /**
     * The token owner
     * indexed
     */
    owner: Address;
    /**
     * Approved to transfer from this account
     * indexed
     */
    spender: Address;
    /**
     * Amount approved to transfer
     */
    value: BigNumber;
}
