import BigNumber from 'bignumber.js';
import { Address, Hash } from '../commonTypes';
import { ContractWrapperFactory } from '../contractWrapperFactory';
import { ArcTransactionResult, IContractWrapperFactory } from '../iContractWrapperBase';
import { TxGeneratingFunctionOptions } from '../transactionService';
import { EventFetcherFactory } from '../web3EventService';
import { Erc20Wrapper } from './erc20';
import { InitializeOptions, Locking4ReputationWrapper, LockingOptions, ReleaseOptions } from './locking4Reputation';
export declare class LockingToken4ReputationWrapper extends Locking4ReputationWrapper {
    name: string;
    friendlyName: string;
    factory: IContractWrapperFactory<LockingToken4ReputationWrapper>;
    LockToken: EventFetcherFactory<LockingToken4ReputationLockEventResult>;
    initialize(options: LockTokenInitializeOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    release(options: ReleaseOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    /**
     * Returns reason why can't lock, else null if can lock
     */
    getLockBlocker(options: TokenLockingOptions): Promise<string | null>;
    lock(options: TokenLockingOptions & TxGeneratingFunctionOptions): Promise<ArcTransactionResult>;
    getTokenForLock(lockingId: Hash): Promise<Erc20Wrapper>;
    getPriceOracleAddress(): Promise<Address>;
}
export declare class LockingToken4ReputationType extends ContractWrapperFactory<LockingToken4ReputationWrapper> {
    deployed(): Promise<LockingToken4ReputationWrapper>;
}
export declare const LockingToken4ReputationFactory: LockingToken4ReputationType;
export interface LockTokenInitializeOptions extends InitializeOptions {
    priceOracleContract: Address;
}
export interface LockingToken4ReputationLockEventResult {
    /**
     * indexed
     */
    _lockingId: BigNumber;
    /**
     * indexed
     */
    _token: Address;
    /**
     * number/denominator is the price of the token at the time the token is locked
     */
    _numerator: BigNumber;
    /**
     * number/denominator is the price of the token at the time the token is locked
     */
    _denominator: BigNumber;
}
export interface TokenLockingOptions extends LockingOptions {
    tokenAddress: Address;
}
