import { CreateInvoiceData, DataContainer, Invoice, InvoiceID, InvoiceStats, InvoiceUpdate } from '../models/invoice';
/** Provider is an interface
 * representing objects that interact with backend services (e.g., via http)
 * that manage invoices.
 **/
export interface Provider {
    createInvoice(data: CreateInvoiceData): Promise<DataContainer<Invoice>>;
    cancelInvoice(invoiceId: InvoiceID): Promise<DataContainer<Invoice>>;
    getInvoiceInfo(invoiceId: InvoiceID): Promise<DataContainer<Invoice>>;
    getInvoiceStats(): Promise<DataContainer<InvoiceStats>>;
    isUpdateValid(data: InvoiceUpdate): boolean;
}
/** InvoiceManager is used to manipulate invoices. */
export declare class InvoiceManager {
    private _provider;
    constructor(provider: Provider);
    /** Create new Invoice. */
    create(data: CreateInvoiceData): Promise<DataContainer<Invoice>>;
    /** Cancel existing Invoice. */
    cancel(invoiceId: InvoiceID): Promise<DataContainer<Invoice>>;
    /** Get information about Invoice. */
    info(invoiceId: InvoiceID): Promise<DataContainer<Invoice>>;
    /** Get Merchant statistics. */
    stats(): Promise<DataContainer<InvoiceStats>>;
    /** Process WebHook data. */
    processUpdate(update: InvoiceUpdate): DataContainer<Omit<Invoice, 'id'>>;
}
