///
///
///
import IChannelsDatabase from './storage/IChannelsDatabase';
import PaymentManager from './PaymentManager';
import ChannelContract from './ChannelContract';
import { TransactionResult } from 'truffle-contract';
import Payment from './payment';
import MachinomyOptions from './MachinomyOptions';
import IChannelManager from './IChannelManager';
import * as BigNumber from 'bignumber.js';
import ChannelId from './ChannelId';
import { EventEmitter } from 'events';
import * as Web3 from 'web3';
import IPaymentsDatabase from './storage/IPaymentsDatabase';
import ITokensDatabase from './storage/ITokensDatabase';
import { PaymentChannel } from './PaymentChannel';
import { RemoteChannelInfo } from './RemoteChannelInfo';
export default class ChannelManager extends EventEmitter implements IChannelManager {
/** Default settlement period for a payment channel */
static DEFAULT_SETTLEMENT_PERIOD: number;
private account;
private web3;
private channelsDao;
private paymentsDao;
private tokensDao;
private channelContract;
private paymentManager;
private mutex;
private machinomyOptions;
constructor(account: string, web3: Web3, channelsDao: IChannelsDatabase, paymentsDao: IPaymentsDatabase, tokensDao: ITokensDatabase, channelContract: ChannelContract, paymentManager: PaymentManager, machinomyOptions: MachinomyOptions);
openChannel(sender: string, receiver: string, amount: BigNumber.BigNumber, minDepositAmount?: BigNumber.BigNumber, channelId?: ChannelId | string, tokenContract?: string): Promise;
closeChannel(channelId: string | ChannelId): Promise;
deposit(channelId: string, value: BigNumber.BigNumber): Promise;
nextPayment(channelId: string | ChannelId, amount: BigNumber.BigNumber, meta: string): Promise;
spendChannel(payment: Payment, token?: string): Promise;
acceptPayment(payment: Payment): Promise;
requireOpenChannel(sender: string, receiver: string, amount: BigNumber.BigNumber, minDepositAmount?: BigNumber.BigNumber, tokenContract?: string): Promise;
channels(): Promise;
openChannels(): Promise;
settlingChannels(): Promise;
channelById(channelId: ChannelId | string): Promise;
verifyToken(token: string): Promise;
/**
* DO NOT USE THIS.
* @param sender
* @param receiver
* @param remoteChannels
*/
syncChannels(sender: string, receiver: string, remoteChannels: RemoteChannelInfo[]): Promise;
lastPayment(channelId: string | ChannelId): Promise;
private internalOpenChannel;
private internalCloseChannel;
private settle;
private claim;
private buildChannel;
private handleUnknownChannel;
private findChannel;
}