import { type HTMLAttributes } from 'react';
import { type VariantProps } from 'class-variance-authority';
import { type CarePlanEntryCardProps } from '../care-plan-entry-card';
import { entitySurfaceVariants, type CarePlanState } from '../_shared/entity-card';
/**
* A single treatment line within the plan. Each ref is forwarded straight
* to a `` rendered inside the Accordion. `entryId` keys
* the row and surfaces as the line's `data-component-id`.
*/
export interface CarePlanEntryRef extends Omit {
/** Stable line id — identifier only, never PHI. */
entryId: string;
}
/** Financial figures for the plan, all amounts in integer cents. */
export interface CarePlanAmounts {
/** Full list price in cents (non-negative). */
priceCents?: number;
/** Discounted / agreed price in cents (non-negative). */
discountedPriceCents?: number;
/** Amount already invoiced in cents (non-negative). */
billedAmountCents?: number;
/** Outstanding amount still due in cents (non-negative). */
dueCents?: number;
/** How many days the due amount is overdue (non-negative). */
overdueDays?: number;
}
/** Phase / line progress for the plan. */
export interface CarePlanProgress {
/** Number of executed / completed lines. */
done: number;
/** Total number of lines. */
total: number;
}
/** Lifecycle dates for the plan, all ISO-8601 strings. */
export interface CarePlanDates {
/** When the plan was accepted. */
acceptedIso?: string;
/** When the plan was closed. */
closedIso?: string;
/** When the plan was discarded / rejected. */
discardedIso?: string;
}
/** Curated read-only handle exposed to the agent registry. */
export interface CarePlanCardHandle {
/** The plan's lifecycle state. */
getState: () => CarePlanState;
/** Line progress as `{ done, total }` — counts only, no PHI. */
getProgress: () => {
done: number;
total: number;
};
}
export interface CarePlanCardProps extends Omit, 'aria-label' | 'title' | 'children'> {
/**
* Stable instance id — surfaced as `data-component-id` for the agent
* registry and mirrored to the DOM `id`; also wires the heading ↔ region
* relationship.
*/
id?: string;
/** Plan number (e.g. estimate number). Rendered beside the name. */
number: string | number;
/** Plan name / title. Rendered as the card heading. */
name?: string;
/** Lifecycle state — drives a localised Badge label. */
state: CarePlanState;
/** Optional deep link to the full plan. Guarded by `isSafeEntityUrl`. */
url?: string;
/** Financial figures (billed / due / overdue …). */
amounts?: CarePlanAmounts;
/** Line progress (done / total). */
progress?: CarePlanProgress;
/** Lifecycle dates (accepted / closed / discarded). */
dates?: CarePlanDates;
/** Reason the plan was discarded — shown only when `state === 'discarded'`. */
discardReason?: string;
/**
* Dentition the plan applies to — forwarded to each entry card's tooth
* display where relevant. Structural only.
*/
dentitionMode?: 'permanent' | 'deciduous';
/** Treatment lines — rendered as `` rows in an Accordion. */
entries?: CarePlanEntryRef[];
/** BCP 47 locale override for dates / currency. Defaults to i18n.language. */
locale?: string;
/** ISO 4217 currency code for the money chips. Defaults to `EUR`. */
currency?: string;
/**
* `elevated` (default) paints the kit card chrome; `flat` drops it for use
* inside an existing Card / Sheet.
*/
surface?: 'flat' | 'elevated';
/** Fires when the plan deep link / heading is activated. */
onActivate?: () => void;
/** Accessible label override for the plan region. */
'aria-label'?: string;
}
export declare const CarePlanCard: import("react").ForwardRefExoticComponent>;
export type CarePlanCardSurface = NonNullable['surface']>;
/** The dentition the plan applies to. */
export type CarePlanCardDentition = NonNullable;
export type { CarePlanState } from '../_shared/entity-card';
//# sourceMappingURL=care-plan-card.d.ts.map