import { PaymentChannel, PaymentChannelJSON } from '../PaymentChannel'; import * as BigNumber from 'bignumber.js'; import IEngine from './IEngine'; import ChannelId from '../ChannelId'; import IChannelsDatabase from './IChannelsDatabase'; import ChannelInflator from '../ChannelInflator'; export default abstract class AbstractChannelsDatabase implements IChannelsDatabase { engine: T; kind: string; inflator: ChannelInflator; constructor(engine: T, inflator: ChannelInflator, namespace: string | null); inflatePaymentChannels(channels: Array): Promise>; inflatePaymentChannel(json: PaymentChannelJSON): Promise; filterByState(state: number, channels: PaymentChannel[]): PaymentChannel[]; abstract save(paymentChannel: PaymentChannel): Promise; saveOrUpdate(paymentChannel: PaymentChannel): Promise; abstract deposit(channelId: ChannelId | string, value: BigNumber.BigNumber): Promise; abstract firstById(channelId: ChannelId | string): Promise; abstract spend(channelId: ChannelId | string, spent: BigNumber.BigNumber): Promise; abstract all(): Promise>; abstract allOpen(): Promise; allSettling(): Promise; abstract findUsable(sender: string, receiver: string, amount: BigNumber.BigNumber): Promise; abstract findBySenderReceiver(sender: string, receiver: string): Promise>; abstract findBySenderReceiverChannelId(sender: string, receiver: string, channelId: ChannelId | string): Promise; abstract updateState(channelId: ChannelId | string, state: number): Promise; abstract updateSettlingUntil(channelId: ChannelId | string, settlingUntil: BigNumber.BigNumber): Promise; }