import type { ClaimSnapshot } from "@actuarial-ts/core"; import { z } from "zod"; /** * A claim valuation known only to annual precision. * * `incurredToDate` is deliberately named for the interpretation already made * by the caller. Source-specific adapters must document how their fields were * mapped to paid and incurred before calling this function. */ export declare const annualClaimDevelopmentRowSchema: z.ZodEffects; evaluationYear: z.ZodNumber; paidToDate: z.ZodNumber; incurredToDate: z.ZodNumber; status: z.ZodEnum<["open", "closed"]>; }, "strict", z.ZodTypeAny, { status: "open" | "closed"; claimId: string; originYear: number; evaluationYear: number; paidToDate: number; incurredToDate: number; reportYear?: number | undefined; }, { status: "open" | "closed"; claimId: string; originYear: number; evaluationYear: number; paidToDate: number; incurredToDate: number; reportYear?: number | undefined; }>, { status: "open" | "closed"; claimId: string; originYear: number; evaluationYear: number; paidToDate: number; incurredToDate: number; reportYear?: number | undefined; }, { status: "open" | "closed"; claimId: string; originYear: number; evaluationYear: number; paidToDate: number; incurredToDate: number; reportYear?: number | undefined; }>; export type AnnualClaimDevelopmentRow = z.infer; export type AnnualDuplicatePolicy = "reject" | "combine"; export interface AnnualDevelopmentOptions { /** * Same-claim, same-year records are ambiguous. The safe default rejects * them. `combine` treats them as components of one dollar stream: paid and * incurred are summed and the combined record is open when any component is * open. The returned finding makes that judgment visible. */ duplicatePolicy?: AnnualDuplicatePolicy; } export type AnnualDevelopmentFindingCode = "annual-dates-derived" | "report-year-inferred" | "duplicate-snapshots-combined"; export interface AnnualDevelopmentFinding { code: AnnualDevelopmentFindingCode; severity: "disclosure" | "warning"; message: string; affectedClaims?: number; affectedGroups?: number; affectedRows?: number; } export interface AnnualDevelopmentConventions { sourceDatePrecision: "year"; derivedDateConvention: "calendar-year-end"; missingReportYearConvention: "earliest-evaluation-year"; duplicatePolicy: AnnualDuplicatePolicy; } export interface AnnualDevelopmentConversion { claims: ClaimSnapshot[]; findings: AnnualDevelopmentFinding[]; conventions: AnnualDevelopmentConventions; sourceRowCount: number; } /** * Converts year-precision claim valuations into the exact-date * `ClaimSnapshot` contract without pretending the source supplied exact * dates. Every derived date uses calendar year-end, and the convention is * returned alongside the claims for disclosure. * * Missing report years are inferred as the earliest evaluation year for the * claim. Duplicate claim/evaluation-year rows are rejected unless the caller * explicitly selects the auditable `combine` policy. */ export declare function annualDevelopmentToClaimSnapshots(input: readonly AnnualClaimDevelopmentRow[], options?: AnnualDevelopmentOptions): AnnualDevelopmentConversion; //# sourceMappingURL=annualDevelopment.d.ts.map