import { Schema } from "joi";
import { Model } from "../abstracts/model";
import { Client, RequestOptions } from "../client";
import { InvoiceApi } from "./api";
import { IInvoice, IInvoiceRecordPaymentRequest, IInvoiceRecordRefundRequest, IInvoiceSearchRequest, IQrQueryParams } from "./types";
export declare class InvoiceModel extends Model<IInvoice> {
    model: IInvoice;
    static api: InvoiceApi;
    static schema: Schema;
    static get(id: string, options?: Partial<RequestOptions>): Promise<InvoiceModel>;
    static search(search: IInvoiceSearchRequest, options?: Partial<RequestOptions>): Promise<InvoiceModel[]>;
    static list(options?: Partial<RequestOptions>): Promise<InvoiceModel[]>;
    static generate(options?: Partial<RequestOptions>): Promise<InvoiceModel>;
    static init(client: Client): void;
    qrImage: any;
    constructor(model: IInvoice);
    send(options?: Partial<RequestOptions>): Promise<this>;
    remind(options?: Partial<RequestOptions>): Promise<this>;
    cancel(options?: Partial<RequestOptions>): Promise<this>;
    update(payload?: IInvoice, options?: Partial<RequestOptions>): Promise<this>;
    delete(options?: Partial<RequestOptions>): Promise<this>;
    recordPayment(payment: IInvoiceRecordPaymentRequest, options?: Partial<RequestOptions>): Promise<void>;
    recordRefund(refund?: IInvoiceRecordRefundRequest, options?: Partial<RequestOptions>): Promise<void>;
    qr(opts?: IQrQueryParams, options?: Partial<RequestOptions>): Promise<any>;
}
