import Payment, { PaymentJSON } from '../payment';
import IEngine from './IEngine';
import IPaymentsDatabase from './IPaymentsDatabase';
import ChannelId from '../ChannelId';
export default abstract class AbstractPaymentsDatabase<T extends IEngine> implements IPaymentsDatabase {
    kind: string;
    engine: T;
    constructor(engine: T, namespace: string | null);
    inflatePayment(json: PaymentJSON): Payment | null;
    abstract save(token: string, payment: Payment): Promise<void>;
    abstract firstMaximum(channelId: ChannelId | string): Promise<Payment | any>;
    abstract findByToken(token: string): Promise<Payment | any>;
}
