import { type Client } from '../core.js'; import { type Result, type RequestOptions } from '../lib/types.js'; import type { ListInvoicesRequest, ListInvoicesResponse, GetInvoiceRequest, GetInvoiceResponse, UpdateInvoiceRequest, UpdateInvoiceResponse, DeleteInvoiceRequest, DeleteInvoiceResponse, AdvanceInvoiceRequest, AdvanceInvoiceResponse, ApproveInvoiceRequest, ApproveInvoiceResponse, RetryInvoiceRequest, RetryInvoiceResponse, SnapshotQuantitiesInvoiceRequest, SnapshotQuantitiesInvoiceResponse } from '../models/operations/invoices.js'; /** * List billing invoices * * List billing invoices. * * Returns a page of invoices. Gathering invoices are never included. Use `filter` * to narrow by status, customer, dates, or service period start. Use `sort` to * control ordering. * * GET /openmeter/billing/invoices */ export declare function listInvoices(client: Client, req?: ListInvoicesRequest, options?: RequestOptions): Promise>; /** * Get a billing invoice * * Get a billing invoice by ID. * * Returns the full invoice resource including line items, status details, totals, * and workflow configuration snapshot. * * GET /openmeter/billing/invoices/{invoiceId} */ export declare function getInvoice(client: Client, req: GetInvoiceRequest, options?: RequestOptions): Promise>; /** * Update a billing invoice * * Update a billing invoice. * * Only the mutable fields of the invoice can be edited: description, labels, * supplier, customer, workflow settings, and top-level lines. Top-level lines are * matched by `id`; lines without an `id` are created, and existing lines omitted * from `lines` are deleted. Detailed (child) lines are always computed and cannot * be edited directly. Only invoices in draft status can be updated. * * PUT /openmeter/billing/invoices/{invoiceId} */ export declare function updateInvoice(client: Client, req: UpdateInvoiceRequest, options?: RequestOptions): Promise>; /** * Delete a billing invoice * * Delete a billing invoice. * * Only standard invoices in draft status can be deleted. Deleting an invoice will * also delete all associated line items and workflow configuration. * * DELETE /openmeter/billing/invoices/{invoiceId} */ export declare function deleteInvoice(client: Client, req: DeleteInvoiceRequest, options?: RequestOptions): Promise>; /** * Advance billing invoice's next status * * Advance a billing invoice. * * Advances the invoice to the next workflow state. The next state is determined by * the invoice's current status and workflow configuration. Only invoices in draft * or issued status can be advanced. * * POST /openmeter/billing/invoices/{invoiceId}/advance */ export declare function advanceInvoice(client: Client, req: AdvanceInvoiceRequest, options?: RequestOptions): Promise>; /** * Send the invoice to the customer * * Approve a billing invoice. * * This call instantly sends the invoice to the customer using the configured * billing profile app. * * This call is valid in two invoice statuses: * * - draft: the invoice will be sent to the customer, the invoice state becomes * issued * - manual_approval_needed: the invoice will be sent to the customer, the invoice * state becomes issued * * POST /openmeter/billing/invoices/{invoiceId}/approve */ export declare function approveInvoice(client: Client, req: ApproveInvoiceRequest, options?: RequestOptions): Promise>; /** * Retry advancing the invoice after a failed attempt * * Retry sending a billing invoice. * * Retry advancing the invoice after a failed attempt. * * The action can be called when the invoice's statusDetails' actions field contain * the "retry" action. * * POST /openmeter/billing/invoices/{invoiceId}/retry */ export declare function retryInvoice(client: Client, req: RetryInvoiceRequest, options?: RequestOptions): Promise>; /** * Snapshot quantities for usage based line items * * Snapshot quantities for usage-based line items. * * This call will snapshot the quantities for all usage based line items in the * invoice. * * This call is only valid in draft.waiting_for_collection status, where the * collection period can be skipped using this action. * * POST /openmeter/billing/invoices/{invoiceId}/snapshot-quantities */ export declare function snapshotQuantitiesInvoice(client: Client, req: SnapshotQuantitiesInvoiceRequest, options?: RequestOptions): Promise>;