/** Display status: the raw doc status (same enum as the parent draft) plus * portal-computed REJECTED/UPDATED — same time-aware rule as the parent * draft row: a DRAFT whose most recent rejection is newer than its last * update shows Rejected; once edited after the rejection it shows Updated. */ export type ClosingGroupStatus = F_CLOSING_DRAFT_STATUS | 'REJECTED' | 'UPDATED'; export declare function getGroupDisplayStatus(group: { status: F_CLOSING_DRAFT_STATUS; rejectionHistory?: FdoClosingDraftRejectionHistory[] | null; updatedAt?: string | null; }): ClosingGroupStatus; /** Nullable-tolerant on the optional fields so the embedded listing DTO * (FdtoClosingDraftListGroup, same fields but nullish) is assignable. */ export interface ClosingGroupCard { id: string; name: string; code: string; color?: string; status: F_CLOSING_DRAFT_STATUS; rejectionHistory?: FdoClosingDraftRejectionHistory[] | null; itemCount: number; totalAmount: number; countedCount: number; countedBy?: string | null; verifiedBy?: string | null; updatedBy?: string | null; updatedAt?: string | null; } export interface ClosingGroupSummary { groupCount: number; totalItems: number; totalAmount: number; completed: number; draft: number; rejected: number; } export declare function getStockTakeValue(item: FdoClosingDraftItem): number; export declare function getGroupName(group: FdoSubClosingDraft): string; export declare function toClosingGroupCard(group: FdoSubClosingDraft): ClosingGroupCard; export declare function summarizeClosingGroups(groups: ClosingGroupCard[]): ClosingGroupSummary;