import { ReactNode } from 'react'; import { Amount, InvoicingInvoice, InvoicingNamedOption, InvoicingSubscription, ZeniDate } from '@zeniai/client-epic-state'; /** * Formats an invoicing amount with a currency symbol. * * Invoicing amounts are whole USD at every layer — the API sends dollars, CES * maps them through `toAmount` unconverted, and payload builders send them * unconverted (see the `setup_fee` dollars test in CES). The number branch used * to divide by 100, which was unreachable in practice because every invoicing * state field is typed `Amount`, but it encoded the wrong model and had already * been copied into two screens where it rendered a $1,000 plan as $10. */ export declare function formatInvoicingAmount(value: number | Amount | undefined, currency?: string): string; /** * @deprecated Identical to {@link formatInvoicingAmount} now that neither * divides. Kept so the Overview call sites keep compiling; prefer * `formatInvoicingAmount`. */ export declare function formatInvoicingMajorAmount(value: number | undefined, currency?: string): string; /** Formats a plain integer count for KPI cards. */ export declare function formatInvoicingNumber(value: number | undefined): string; /** * Formats a 0-1 ratio as a percentage for KPI cards (e.g. 0.028 → 2.8%, * 1.12 → 112%). Renders one decimal place, dropping a trailing `.0`. */ export declare function formatInvoicingPercent(value: number | undefined): string; /** Formats an ISO / epoch-ish date string for list cells; falls back to em dash. */ export declare function formatInvoicingDate(value: string | ZeniDate | undefined): string; /** Title-cases a snake_case status/type token for display. */ export declare function humanizeToken(token: string | undefined): string; /** * Label lookup for a config-driven status / type list: the backend `name` when * config has an entry for the code, else the humanized code. * * The fallback matters — config arrives asynchronously, and a code the backend * added but this list has not caught up with should still read sensibly rather * than render blank. */ export declare function buildInvoicingLabelGetter(options: InvoicingNamedOption[] | undefined): (code: string | undefined) => string; /** Adapt a config option to the `{label, value}` shape the select fields take. */ export declare function toInvoicingSelectOption(option: InvoicingNamedOption): { label: string; value: string; }; export declare const ClickableCell: import('@emotion/styled').StyledComponent<{ theme?: import('@emotion/react').Theme; as?: React.ElementType; }, import('react').DetailedHTMLProps, HTMLDivElement>, {}>; export declare const CellText: import('@emotion/styled').StyledComponent<{ theme?: import('@emotion/react').Theme; as?: React.ElementType; } & import('react').ClassAttributes & import('react').HTMLAttributes & { theme?: import('@emotion/react').Theme; }, {}, {}>; export declare const CellTextStrong: import('@emotion/styled').StyledComponent<{ theme?: import('@emotion/react').Theme; as?: React.ElementType; } & import('react').ClassAttributes & import('react').HTMLAttributes & { theme?: import('@emotion/react').Theme; }, {}, {}>; export declare const AmountCellText: import('@emotion/styled').StyledComponent<{ theme?: import('@emotion/react').Theme; as?: React.ElementType; } & import('react').ClassAttributes & import('react').HTMLAttributes & { theme?: import('@emotion/react').Theme; } & { $alert?: boolean; }, {}, {}>; /** Wraps cell content in a full-size clickable region that opens the row. */ export declare function renderClickableCell(onClick: () => void, content: ReactNode, testIdSeed?: string): ReactNode; /** Customer-facing invoice number; falls back to internal id when unset. */ export declare function displayInvoiceNumber(invoice: Pick | undefined): string; /** * What a merchant should see as the subscription's identifier. Falls back to the * internal id so records predating `subscription_number` are not blank — the id * stays the key for routes, fetches and lifecycle actions either way. */ export declare function invoicingSubscriptionDisplayNumber(subscription: Pick): string;