machinomy
Version:
Micropayments powered by Ethereum
29 lines (28 loc) • 1.93 kB
TypeScript
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<T extends IEngine> implements IChannelsDatabase {
engine: T;
kind: string;
inflator: ChannelInflator;
constructor(engine: T, inflator: ChannelInflator, namespace: string | null);
inflatePaymentChannels(channels: Array<PaymentChannelJSON>): Promise<Array<PaymentChannel>>;
inflatePaymentChannel(json: PaymentChannelJSON): Promise<PaymentChannel | null>;
filterByState(state: number, channels: PaymentChannel[]): PaymentChannel[];
abstract save(paymentChannel: PaymentChannel): Promise<void>;
saveOrUpdate(paymentChannel: PaymentChannel): Promise<void>;
abstract deposit(channelId: ChannelId | string, value: BigNumber.BigNumber): Promise<void>;
abstract firstById(channelId: ChannelId | string): Promise<PaymentChannel | null>;
abstract spend(channelId: ChannelId | string, spent: BigNumber.BigNumber): Promise<void>;
abstract all(): Promise<Array<PaymentChannel>>;
abstract allOpen(): Promise<PaymentChannel[]>;
allSettling(): Promise<PaymentChannel[]>;
abstract findUsable(sender: string, receiver: string, amount: BigNumber.BigNumber): Promise<PaymentChannel | null>;
abstract findBySenderReceiver(sender: string, receiver: string): Promise<Array<PaymentChannel>>;
abstract findBySenderReceiverChannelId(sender: string, receiver: string, channelId: ChannelId | string): Promise<PaymentChannel | null>;
abstract updateState(channelId: ChannelId | string, state: number): Promise<void>;
abstract updateSettlingUntil(channelId: ChannelId | string, settlingUntil: BigNumber.BigNumber): Promise<void>;
}