/** * Shared utilities for time tracking components */ export type Currency = 'CAD' | 'USD'; export type TimeEntryStatus = 'draft' | 'submitted' | 'approved' | 'rejected'; /** Alias for TimeEntryStatus for approval workflows */ export type ApprovalStatus = TimeEntryStatus; /** * Time entry data structure */ export interface TimeEntry { id: string; date: Date | string; hours: number; description: string; status: TimeEntryStatus; /** Integer minor units of the display currency — $19.99 is 1999 (#2401). */ amount?: number; workerName?: string; mileage?: number; /** Minor units per hour, so `hours * hourlyRate` is minor units (#2401). */ hourlyRate?: number; } /** * Status color mapping using M3 design tokens */ export declare const statusColors: Record; /** * Format a date for display (e.g., "Jan 5") */ export declare function formatDate(date: Date | string): string; /** * Format a minor-units amount for display. * * Money in this package is integer minor units (#2401) — `$19.99` is `1999` — * and `Intl.NumberFormat` expects major units, so the scale is undone here. * Without it a $19.99 charge renders as $1,999.00. * * The currency's own minor-unit exponent is used rather than a hard-coded 100, * so zero-decimal currencies (JPY, KRW) are not divided by anything. */ export declare function formatCurrency(amount: number, currency?: Currency): string; /** * Format hours for display (e.g., "8.5h") */ export declare function formatHours(hours: number): string; /** * Format hours in HH:MM format (e.g., "8:30") */ export declare function formatHoursHHMM(hours: number): string; //# sourceMappingURL=utils.d.ts.map