import type { ApiClient } from "../../shared/types/index";
import type { CreateInvoiceRequest, UpdateInvoiceRequest, BulkCreateInvoiceRequest, ListInvoicesResponse, BulkCreateInvoicesResponse, InvoiceListOptions, DetailedInvoice } from "./types";
import { InvoiceStatus } from "./enums";
export declare class InvoiceService {
    private apiClient;
    constructor(p: {
        apiClient: ApiClient;
    });
    /**
     * Create a new invoice
     */
    create(params: CreateInvoiceRequest): Promise<DetailedInvoice>;
    /**
     * Create multiple invoices in bulk
     */
    createBulk(params: BulkCreateInvoiceRequest): Promise<BulkCreateInvoicesResponse>;
    /**
     * List invoices with optional filtering
     */
    list(options?: InvoiceListOptions): Promise<ListInvoicesResponse>;
    /**
     * Retrieve a specific invoice
     */
    retrieve(invoiceId: string): Promise<DetailedInvoice>;
    /**
     * Update an invoice
     */
    update(invoiceId: string, params: UpdateInvoiceRequest): Promise<DetailedInvoice>;
    /**
     * Cancel an invoice
     */
    cancel(invoiceId: string): Promise<DetailedInvoice>;
    /**
     * Search invoices by metadata
     */
    searchByMetadata(metadata: Record<string, string>, options?: Omit<InvoiceListOptions, "metadata">): Promise<ListInvoicesResponse>;
    /**
     * Get invoices by status
     */
    getByStatus(status: InvoiceStatus, options?: Omit<InvoiceListOptions, "status">): Promise<ListInvoicesResponse>;
    /**
     * Get expired invoices
     */
    getExpired(options?: Omit<InvoiceListOptions, "status">): Promise<ListInvoicesResponse>;
    /**
     * Get paid invoices
     */
    getPaid(options?: Omit<InvoiceListOptions, "status">): Promise<ListInvoicesResponse>;
    private handleError;
    protected parseBody(p: object): {};
}
//# sourceMappingURL=service.d.ts.map