import type { Client } from 'openapi-fetch';
import type { RequestOptions } from './common.js';
import type { BillingProfileCreate, BillingProfileCustomerOverrideCreate, BillingProfileReplaceUpdateWithWorkflow, InvoicePendingLineCreateInput, InvoiceReplaceUpdate, InvoiceSimulationInput, operations, paths, VoidInvoiceActionInput } from './schemas.js';
/**
 * Billing
 */
export declare class Billing {
    private client;
    profiles: BillingProfiles;
    invoices: BillingInvoices;
    customers: BillingCustomers;
    constructor(client: Client<paths, `${string}/${string}`>);
}
/**
 * Billing Profiles
 */
export declare class BillingProfiles {
    private client;
    constructor(client: Client<paths, `${string}/${string}`>);
    /**
     * Create a billing profile
     * @param billingProfile - The billing profile to create
     * @param signal - An optional abort signal
     * @returns The created billing profile
     */
    create(billingProfile: BillingProfileCreate, options?: RequestOptions): Promise<{
        readonly id: string;
        name: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        readonly workflow: import("./schemas.js").components["schemas"]["BillingWorkflow"];
        readonly apps: import("./schemas.js").components["schemas"]["BillingProfileAppsOrReference"];
        default: boolean;
    } | undefined>;
    /**
     * Get a billing profile by ID
     * @param id - The ID of the billing profile to get
     * @param signal - An optional abort signal
     * @returns The billing profile
     */
    get(id: operations['getBillingProfile']['parameters']['path']['id'], options?: RequestOptions): Promise<{
        readonly id: string;
        name: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        readonly workflow: import("./schemas.js").components["schemas"]["BillingWorkflow"];
        readonly apps: import("./schemas.js").components["schemas"]["BillingProfileAppsOrReference"];
        default: boolean;
    } | undefined>;
    /**
     * List billing profiles
     * @param query - The query parameters
     * @param signal - An optional abort signal
     * @returns The billing profiles
     */
    list(query?: operations['listBillingProfiles']['parameters']['query'], options?: RequestOptions): Promise<{
        totalCount: number;
        page: number;
        pageSize: number;
        items: import("./schemas.js").components["schemas"]["BillingProfile"][];
    } | undefined>;
    /**
     * Update a billing profile
     * @param id - The ID of the billing profile to update
     * @param billingProfile - The billing profile to update
     * @param signal - An optional abort signal
     * @returns The updated billing profile
     */
    update(id: operations['updateBillingProfile']['parameters']['path']['id'], billingProfile: BillingProfileReplaceUpdateWithWorkflow, options?: RequestOptions): Promise<{
        readonly id: string;
        name: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        readonly workflow: import("./schemas.js").components["schemas"]["BillingWorkflow"];
        readonly apps: import("./schemas.js").components["schemas"]["BillingProfileAppsOrReference"];
        default: boolean;
    } | undefined>;
    /**
     * Delete a billing profile
     * @param id - The ID of the billing profile to delete
     * @param options - The request options
     * @returns The deleted billing profile
     */
    delete(id: operations['deleteBillingProfile']['parameters']['path']['id'], options?: RequestOptions): Promise<undefined>;
}
/**
 * Billing Invoices
 */
export declare class BillingInvoices {
    private client;
    constructor(client: Client<paths, `${string}/${string}`>);
    /**
     * List invoices
     * @param query - The query parameters
     * @param signal - An optional abort signal
     * @returns The invoices
     */
    list(query?: operations['listInvoices']['parameters']['query'], options?: RequestOptions): Promise<{
        totalCount: number;
        page: number;
        pageSize: number;
        items: import("./schemas.js").components["schemas"]["Invoice"][];
    } | undefined>;
    /**
     * Get an invoice by ID
     * @param id - The ID of the invoice to get
     * @param signal - An optional abort signal
     * @returns The invoice
     */
    get(id: operations['getInvoice']['parameters']['path']['invoiceId'], options?: RequestOptions): Promise<{
        readonly id: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly type: import("./schemas.js").components["schemas"]["InvoiceType"];
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        customer: import("./schemas.js").components["schemas"]["BillingInvoiceCustomerExtendedDetails"];
        readonly number: import("./schemas.js").components["schemas"]["InvoiceNumber"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly preceding?: import("./schemas.js").components["schemas"]["InvoiceDocumentRef"][];
        readonly totals: import("./schemas.js").components["schemas"]["InvoiceTotals"];
        readonly status: import("./schemas.js").components["schemas"]["InvoiceStatus"];
        readonly statusDetails: import("./schemas.js").components["schemas"]["InvoiceStatusDetails"];
        readonly issuedAt?: Date;
        draftUntil?: Date;
        readonly quantitySnapshotedAt?: Date;
        readonly collectionAt?: Date;
        readonly dueAt?: Date;
        period?: import("./schemas.js").components["schemas"]["Period"];
        readonly voidedAt?: Date;
        readonly sentToCustomerAt?: Date;
        workflow: import("./schemas.js").components["schemas"]["InvoiceWorkflowSettings"];
        lines?: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly payment?: import("./schemas.js").components["schemas"]["InvoicePaymentTerms"];
        readonly validationIssues?: import("./schemas.js").components["schemas"]["ValidationIssue"][];
        readonly externalIds?: import("./schemas.js").components["schemas"]["InvoiceAppExternalIds"];
    } | undefined>;
    /**
     * Update an invoice
     * @description Only invoices in draft or earlier status can be updated.
     * @param id - The ID of the invoice to update
     * @param invoice - The invoice to update
     * @param signal - An optional abort signal
     * @returns The updated invoice
     */
    update(id: operations['updateInvoice']['parameters']['path']['invoiceId'], invoice: InvoiceReplaceUpdate, options?: RequestOptions): Promise<{
        readonly id: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly type: import("./schemas.js").components["schemas"]["InvoiceType"];
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        customer: import("./schemas.js").components["schemas"]["BillingInvoiceCustomerExtendedDetails"];
        readonly number: import("./schemas.js").components["schemas"]["InvoiceNumber"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly preceding?: import("./schemas.js").components["schemas"]["InvoiceDocumentRef"][];
        readonly totals: import("./schemas.js").components["schemas"]["InvoiceTotals"];
        readonly status: import("./schemas.js").components["schemas"]["InvoiceStatus"];
        readonly statusDetails: import("./schemas.js").components["schemas"]["InvoiceStatusDetails"];
        readonly issuedAt?: Date;
        draftUntil?: Date;
        readonly quantitySnapshotedAt?: Date;
        readonly collectionAt?: Date;
        readonly dueAt?: Date;
        period?: import("./schemas.js").components["schemas"]["Period"];
        readonly voidedAt?: Date;
        readonly sentToCustomerAt?: Date;
        workflow: import("./schemas.js").components["schemas"]["InvoiceWorkflowSettings"];
        lines?: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly payment?: import("./schemas.js").components["schemas"]["InvoicePaymentTerms"];
        readonly validationIssues?: import("./schemas.js").components["schemas"]["ValidationIssue"][];
        readonly externalIds?: import("./schemas.js").components["schemas"]["InvoiceAppExternalIds"];
    } | undefined>;
    /**
     * Delete an invoice
     * @description Only invoices that are in the draft (or earlier) status can be deleted.
     * @param id - The ID of the invoice to delete
     * @param options - The request options
     * @returns The deleted invoice
     */
    delete(id: operations['deleteInvoice']['parameters']['path']['invoiceId'], options?: RequestOptions): Promise<undefined>;
    /**
     * Advance the invoice to the next status
     * @description The call doesn't "approve the invoice", it only advances the invoice to the next status if the transition would be automatic. The action can be called when the invoice's statusDetails' actions field contain the "advance" action.
     * @param id - The ID of the invoice to advance
     * @param signal - An optional abort signal
     * @returns The advanced invoice
     */
    advance(id: operations['advanceInvoiceAction']['parameters']['path']['invoiceId'], options?: RequestOptions): Promise<{
        readonly id: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly type: import("./schemas.js").components["schemas"]["InvoiceType"];
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        customer: import("./schemas.js").components["schemas"]["BillingInvoiceCustomerExtendedDetails"];
        readonly number: import("./schemas.js").components["schemas"]["InvoiceNumber"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly preceding?: import("./schemas.js").components["schemas"]["InvoiceDocumentRef"][];
        readonly totals: import("./schemas.js").components["schemas"]["InvoiceTotals"];
        readonly status: import("./schemas.js").components["schemas"]["InvoiceStatus"];
        readonly statusDetails: import("./schemas.js").components["schemas"]["InvoiceStatusDetails"];
        readonly issuedAt?: Date;
        draftUntil?: Date;
        readonly quantitySnapshotedAt?: Date;
        readonly collectionAt?: Date;
        readonly dueAt?: Date;
        period?: import("./schemas.js").components["schemas"]["Period"];
        readonly voidedAt?: Date;
        readonly sentToCustomerAt?: Date;
        workflow: import("./schemas.js").components["schemas"]["InvoiceWorkflowSettings"];
        lines?: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly payment?: import("./schemas.js").components["schemas"]["InvoicePaymentTerms"];
        readonly validationIssues?: import("./schemas.js").components["schemas"]["ValidationIssue"][];
        readonly externalIds?: import("./schemas.js").components["schemas"]["InvoiceAppExternalIds"];
    } | undefined>;
    /**
     * Approve an invoice
     * @description This call instantly sends the invoice to the customer using the configured billing profile app.
     * @param id - The ID of the invoice to approve
     * @param signal - An optional abort signal
     * @returns The approved invoice
     */
    approve(id: operations['approveInvoiceAction']['parameters']['path']['invoiceId'], options?: RequestOptions): Promise<{
        readonly id: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly type: import("./schemas.js").components["schemas"]["InvoiceType"];
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        customer: import("./schemas.js").components["schemas"]["BillingInvoiceCustomerExtendedDetails"];
        readonly number: import("./schemas.js").components["schemas"]["InvoiceNumber"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly preceding?: import("./schemas.js").components["schemas"]["InvoiceDocumentRef"][];
        readonly totals: import("./schemas.js").components["schemas"]["InvoiceTotals"];
        readonly status: import("./schemas.js").components["schemas"]["InvoiceStatus"];
        readonly statusDetails: import("./schemas.js").components["schemas"]["InvoiceStatusDetails"];
        readonly issuedAt?: Date;
        draftUntil?: Date;
        readonly quantitySnapshotedAt?: Date;
        readonly collectionAt?: Date;
        readonly dueAt?: Date;
        period?: import("./schemas.js").components["schemas"]["Period"];
        readonly voidedAt?: Date;
        readonly sentToCustomerAt?: Date;
        workflow: import("./schemas.js").components["schemas"]["InvoiceWorkflowSettings"];
        lines?: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly payment?: import("./schemas.js").components["schemas"]["InvoicePaymentTerms"];
        readonly validationIssues?: import("./schemas.js").components["schemas"]["ValidationIssue"][];
        readonly externalIds?: import("./schemas.js").components["schemas"]["InvoiceAppExternalIds"];
    } | undefined>;
    /**
     * Retry advancing the invoice after a failed attempt.
     * @param id - The ID of the invoice to retry
     * @param signal - An optional abort signal
     * @returns The retried invoice
     */
    retry(id: operations['retryInvoiceAction']['parameters']['path']['invoiceId'], options?: RequestOptions): Promise<{
        readonly id: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly type: import("./schemas.js").components["schemas"]["InvoiceType"];
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        customer: import("./schemas.js").components["schemas"]["BillingInvoiceCustomerExtendedDetails"];
        readonly number: import("./schemas.js").components["schemas"]["InvoiceNumber"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly preceding?: import("./schemas.js").components["schemas"]["InvoiceDocumentRef"][];
        readonly totals: import("./schemas.js").components["schemas"]["InvoiceTotals"];
        readonly status: import("./schemas.js").components["schemas"]["InvoiceStatus"];
        readonly statusDetails: import("./schemas.js").components["schemas"]["InvoiceStatusDetails"];
        readonly issuedAt?: Date;
        draftUntil?: Date;
        readonly quantitySnapshotedAt?: Date;
        readonly collectionAt?: Date;
        readonly dueAt?: Date;
        period?: import("./schemas.js").components["schemas"]["Period"];
        readonly voidedAt?: Date;
        readonly sentToCustomerAt?: Date;
        workflow: import("./schemas.js").components["schemas"]["InvoiceWorkflowSettings"];
        lines?: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly payment?: import("./schemas.js").components["schemas"]["InvoicePaymentTerms"];
        readonly validationIssues?: import("./schemas.js").components["schemas"]["ValidationIssue"][];
        readonly externalIds?: import("./schemas.js").components["schemas"]["InvoiceAppExternalIds"];
    } | undefined>;
    /**
     * Void an invoice
     * @description Void an invoice
     *
     *     Only invoices that have been alread issued can be voided.
     * @param id - The ID of the invoice to void
     * @param signal - An optional abort signal
     * @returns The voided invoice
     */
    void(id: operations['voidInvoiceAction']['parameters']['path']['invoiceId'], body: VoidInvoiceActionInput, options?: RequestOptions): Promise<{
        readonly id: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly type: import("./schemas.js").components["schemas"]["InvoiceType"];
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        customer: import("./schemas.js").components["schemas"]["BillingInvoiceCustomerExtendedDetails"];
        readonly number: import("./schemas.js").components["schemas"]["InvoiceNumber"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly preceding?: import("./schemas.js").components["schemas"]["InvoiceDocumentRef"][];
        readonly totals: import("./schemas.js").components["schemas"]["InvoiceTotals"];
        readonly status: import("./schemas.js").components["schemas"]["InvoiceStatus"];
        readonly statusDetails: import("./schemas.js").components["schemas"]["InvoiceStatusDetails"];
        readonly issuedAt?: Date;
        draftUntil?: Date;
        readonly quantitySnapshotedAt?: Date;
        readonly collectionAt?: Date;
        readonly dueAt?: Date;
        period?: import("./schemas.js").components["schemas"]["Period"];
        readonly voidedAt?: Date;
        readonly sentToCustomerAt?: Date;
        workflow: import("./schemas.js").components["schemas"]["InvoiceWorkflowSettings"];
        lines?: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly payment?: import("./schemas.js").components["schemas"]["InvoicePaymentTerms"];
        readonly validationIssues?: import("./schemas.js").components["schemas"]["ValidationIssue"][];
        readonly externalIds?: import("./schemas.js").components["schemas"]["InvoiceAppExternalIds"];
    } | undefined>;
    /**
     * Recalculate an invoice's tax amounts
     * @param id - The ID of the invoice to recalculate
     * @param signal - An optional abort signal
     * @returns The recalculated invoice
     */
    recalculateTax(id: operations['recalculateInvoiceTaxAction']['parameters']['path']['invoiceId'], options?: RequestOptions): Promise<{
        readonly id: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly type: import("./schemas.js").components["schemas"]["InvoiceType"];
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        customer: import("./schemas.js").components["schemas"]["BillingInvoiceCustomerExtendedDetails"];
        readonly number: import("./schemas.js").components["schemas"]["InvoiceNumber"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly preceding?: import("./schemas.js").components["schemas"]["InvoiceDocumentRef"][];
        readonly totals: import("./schemas.js").components["schemas"]["InvoiceTotals"];
        readonly status: import("./schemas.js").components["schemas"]["InvoiceStatus"];
        readonly statusDetails: import("./schemas.js").components["schemas"]["InvoiceStatusDetails"];
        readonly issuedAt?: Date;
        draftUntil?: Date;
        readonly quantitySnapshotedAt?: Date;
        readonly collectionAt?: Date;
        readonly dueAt?: Date;
        period?: import("./schemas.js").components["schemas"]["Period"];
        readonly voidedAt?: Date;
        readonly sentToCustomerAt?: Date;
        workflow: import("./schemas.js").components["schemas"]["InvoiceWorkflowSettings"];
        lines?: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly payment?: import("./schemas.js").components["schemas"]["InvoicePaymentTerms"];
        readonly validationIssues?: import("./schemas.js").components["schemas"]["ValidationIssue"][];
        readonly externalIds?: import("./schemas.js").components["schemas"]["InvoiceAppExternalIds"];
    } | undefined>;
    /**
     * Snapshot invoice line item quantities
     * @description Snapshot the quantities of the invoice line items. This is useful for invoices that have usage-based line items.
     * @param id - The ID of the invoice to snapshot
     * @param signal - An optional abort signal
     * @returns The invoice with snapshotted quantities
     */
    snapshotQuantities(id: operations['snapshotQuantitiesInvoiceAction']['parameters']['path']['invoiceId'], options?: RequestOptions): Promise<{
        readonly id: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly type: import("./schemas.js").components["schemas"]["InvoiceType"];
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        customer: import("./schemas.js").components["schemas"]["BillingInvoiceCustomerExtendedDetails"];
        readonly number: import("./schemas.js").components["schemas"]["InvoiceNumber"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly preceding?: import("./schemas.js").components["schemas"]["InvoiceDocumentRef"][];
        readonly totals: import("./schemas.js").components["schemas"]["InvoiceTotals"];
        readonly status: import("./schemas.js").components["schemas"]["InvoiceStatus"];
        readonly statusDetails: import("./schemas.js").components["schemas"]["InvoiceStatusDetails"];
        readonly issuedAt?: Date;
        draftUntil?: Date;
        readonly quantitySnapshotedAt?: Date;
        readonly collectionAt?: Date;
        readonly dueAt?: Date;
        period?: import("./schemas.js").components["schemas"]["Period"];
        readonly voidedAt?: Date;
        readonly sentToCustomerAt?: Date;
        workflow: import("./schemas.js").components["schemas"]["InvoiceWorkflowSettings"];
        lines?: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly payment?: import("./schemas.js").components["schemas"]["InvoicePaymentTerms"];
        readonly validationIssues?: import("./schemas.js").components["schemas"]["ValidationIssue"][];
        readonly externalIds?: import("./schemas.js").components["schemas"]["InvoiceAppExternalIds"];
    } | undefined>;
    /**
     * Simulate an invoice for a customer
     * @param id - The ID of the customer to simulate the invoice for
     * @param signal - An optional abort signal
     * @returns The simulated invoice
     */
    simulate(id: operations['simulateInvoice']['parameters']['path']['customerId'], body: InvoiceSimulationInput, options?: RequestOptions): Promise<{
        readonly id: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly type: import("./schemas.js").components["schemas"]["InvoiceType"];
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        customer: import("./schemas.js").components["schemas"]["BillingInvoiceCustomerExtendedDetails"];
        readonly number: import("./schemas.js").components["schemas"]["InvoiceNumber"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly preceding?: import("./schemas.js").components["schemas"]["InvoiceDocumentRef"][];
        readonly totals: import("./schemas.js").components["schemas"]["InvoiceTotals"];
        readonly status: import("./schemas.js").components["schemas"]["InvoiceStatus"];
        readonly statusDetails: import("./schemas.js").components["schemas"]["InvoiceStatusDetails"];
        readonly issuedAt?: Date;
        draftUntil?: Date;
        readonly quantitySnapshotedAt?: Date;
        readonly collectionAt?: Date;
        readonly dueAt?: Date;
        period?: import("./schemas.js").components["schemas"]["Period"];
        readonly voidedAt?: Date;
        readonly sentToCustomerAt?: Date;
        workflow: import("./schemas.js").components["schemas"]["InvoiceWorkflowSettings"];
        lines?: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly payment?: import("./schemas.js").components["schemas"]["InvoicePaymentTerms"];
        readonly validationIssues?: import("./schemas.js").components["schemas"]["ValidationIssue"][];
        readonly externalIds?: import("./schemas.js").components["schemas"]["InvoiceAppExternalIds"];
    } | undefined>;
    /**
     * Create pending line items
     * @description Create new pending line items (charges).
     *     This call is used to create a new pending line item for the customer if required a new
     *     gathering invoice will be created.
     *
     *     A new invoice will be created if:
     *     - there is no invoice in gathering state
     *     - the currency of the line item doesn't match the currency of any invoices in gathering state
     * @param customerId - The ID of the customer to create the line items for
     * @param body - The line items to create
     * @param signal - An optional abort signal
     * @returns The created line items
     */
    createLineItems(customerId: operations['createPendingInvoiceLine']['parameters']['path']['customerId'], body: InvoicePendingLineCreateInput, options?: RequestOptions): Promise<{
        readonly lines: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly invoice: import("./schemas.js").components["schemas"]["Invoice"];
        readonly isInvoiceNew: boolean;
    } | undefined>;
    /**
     * Invoice a customer based on the pending line items
     * @description Create a new invoice from the pending line items. This should only be called if for some reason we need to invoice a customer outside of the normal billing cycle.
     * @param body - The invoice data
     * @param options - The request options
     * @returns The created invoices
     */
    invoicePendingLines(body: operations['invoicePendingLinesAction']['requestBody']['content']['application/json'], options?: RequestOptions): Promise<{
        readonly id: string;
        description?: string;
        metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null;
        readonly createdAt: Date;
        readonly updatedAt: Date;
        readonly deletedAt?: Date;
        readonly type: import("./schemas.js").components["schemas"]["InvoiceType"];
        supplier: import("./schemas.js").components["schemas"]["BillingParty"];
        customer: import("./schemas.js").components["schemas"]["BillingInvoiceCustomerExtendedDetails"];
        readonly number: import("./schemas.js").components["schemas"]["InvoiceNumber"];
        currency: import("./schemas.js").components["schemas"]["CurrencyCode"];
        readonly preceding?: import("./schemas.js").components["schemas"]["InvoiceDocumentRef"][];
        readonly totals: import("./schemas.js").components["schemas"]["InvoiceTotals"];
        readonly status: import("./schemas.js").components["schemas"]["InvoiceStatus"];
        readonly statusDetails: import("./schemas.js").components["schemas"]["InvoiceStatusDetails"];
        readonly issuedAt?: Date;
        draftUntil?: Date;
        readonly quantitySnapshotedAt?: Date;
        readonly collectionAt?: Date;
        readonly dueAt?: Date;
        period?: import("./schemas.js").components["schemas"]["Period"];
        readonly voidedAt?: Date;
        readonly sentToCustomerAt?: Date;
        workflow: import("./schemas.js").components["schemas"]["InvoiceWorkflowSettings"];
        lines?: import("./schemas.js").components["schemas"]["InvoiceLine"][];
        readonly payment?: import("./schemas.js").components["schemas"]["InvoicePaymentTerms"];
        readonly validationIssues?: import("./schemas.js").components["schemas"]["ValidationIssue"][];
        readonly externalIds?: import("./schemas.js").components["schemas"]["InvoiceAppExternalIds"];
    }[] | undefined>;
}
/**
 * Billing Customer Invoices and Overrides
 */
export declare class BillingCustomers {
    private client;
    constructor(client: Client<paths, `${string}/${string}`>);
    /**
     * Create or update a customer override
     * @param id - The ID of the customer to create the override for
     * @param body - The customer override to create
     * @param signal - An optional abort signal
     * @returns The created customer override
     */
    createOverride(id: operations['upsertBillingProfileCustomerOverride']['parameters']['path']['customerId'], body: BillingProfileCustomerOverrideCreate, options?: RequestOptions): Promise<{
        customerOverride?: import("./schemas.js").components["schemas"]["BillingProfileCustomerOverride"];
        baseBillingProfileId: string;
        customerProfile?: import("./schemas.js").components["schemas"]["BillingCustomerProfile"];
        customer?: import("./schemas.js").components["schemas"]["Customer"];
    } | undefined>;
    /**
     * Get a customer override
     * @param id - The ID of the customer to get the override for
     * @param signal - An optional abort signal
     * @returns The customer override
     */
    getOverride(id: operations['getBillingProfileCustomerOverride']['parameters']['path']['customerId'], options?: RequestOptions): Promise<{
        customerOverride?: import("./schemas.js").components["schemas"]["BillingProfileCustomerOverride"];
        baseBillingProfileId: string;
        customerProfile?: import("./schemas.js").components["schemas"]["BillingCustomerProfile"];
        customer?: import("./schemas.js").components["schemas"]["Customer"];
    } | undefined>;
    /**
     * List customer overrides
     * @param query - The query parameters
     * @param signal - An optional abort signal
     * @returns The customer overrides
     */
    listOverrides(query?: operations['listBillingProfileCustomerOverrides']['parameters']['query'], options?: RequestOptions): Promise<{
        totalCount: number;
        page: number;
        pageSize: number;
        items: import("./schemas.js").components["schemas"]["BillingProfileCustomerOverrideWithDetails"][];
    } | undefined>;
    /**
     * Delete a customer override
     * @param id - The ID of the customer to delete the override for
     * @param signal - An optional abort signal
     * @returns The deleted customer override
     */
    deleteOverride(id: operations['deleteBillingProfileCustomerOverride']['parameters']['path']['customerId'], options?: RequestOptions): Promise<undefined>;
}
