import { BigNumber } from "bignumber.js";
import { Address } from "../commonTypes";
import { ContractWrapperFactory } from "../contractWrapperFactory";
import { ArcTransactionResult, IContractWrapperFactory } from "../iContractWrapperBase";
import { TxGeneratingFunctionOptions } from "../transactionService";
import { EventFetcherFactory } from "../web3EventService";
import { StandardTokenApproveOptions, StandardTokenChangeApprovalOptions, StandardTokenTransferFromOptions, StandardTokenTransferOptions, StandardTokenWrapper } from "./standardToken";
export declare class MintableTokenWrapper extends StandardTokenWrapper {
    name: string;
    friendlyName: string;
    factory: IContractWrapperFactory<MintableTokenWrapper>;
    Mint: EventFetcherFactory<MintEventResult>;
    MintFinished: EventFetcherFactory<MintFinishedEventResult>;
    /**
     * Mint tokens to recipient
     * @param options
     */
    mint(options: MintableTokenMintOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    /**
     * Terminate the ability to mint tokens
     * @param options
     */
    finishMinting(options?: TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    approve(options: StandardTokenApproveOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    transfer(options: StandardTokenTransferOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    transferFrom(options: StandardTokenTransferFromOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    increaseApproval(options: StandardTokenChangeApprovalOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    decreaseApproval(options: StandardTokenChangeApprovalOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    protected hydrated(): void;
}
/**
 * defined just to add good type checking
 */
export declare class MintableTokenFactoryType extends ContractWrapperFactory<MintableTokenWrapper> {
    deployed(): Promise<MintableTokenWrapper>;
}
export declare const MintableTokenFactory: MintableTokenFactoryType;
export interface MintableTokenMintOptions {
    /**
     * The token recipient
     */
    recipient: Address;
    /**
     * Amount to mint
     */
    amount: BigNumber | string;
}
export interface MintEventResult {
    /**
     * The token recipient
     * indexed
     */
    to: Address;
    /**
     * Amount minted
     */
    amount: BigNumber;
}
export interface MintFinishedEventResult {
}
