import { ClaimStatusSchema, ClaimUncheckedCreateInputObjectSchema } from "@repo/db/usedSchemas";
import { z } from "zod";
import { Decimal } from "decimal.js";
import { Staff } from "@repo/db/types";
export declare const insertClaimSchema: z.ZodObject<Omit<any, "id" | "createdAt" | "updatedAt">, z.UnknownKeysParam, z.ZodTypeAny, {
    [x: string]: any;
    [x: number]: any;
    [x: symbol]: any;
}, {
    [x: string]: any;
    [x: number]: any;
    [x: symbol]: any;
}>;
export type InsertClaim = z.infer<typeof insertClaimSchema>;
export declare const updateClaimSchema: z.ZodObject<{
    [x: string]: z.ZodOptional<any>;
    [x: number]: z.ZodOptional<any>;
    [x: symbol]: z.ZodOptional<any>;
}, z.UnknownKeysParam, z.ZodTypeAny, {
    [x: string]: any;
    [x: number]: any;
    [x: symbol]: any;
}, {
    [x: string]: any;
    [x: number]: any;
    [x: symbol]: any;
}>;
export type UpdateClaim = z.infer<typeof updateClaimSchema>;
export declare const ExtendedClaimSchema: z.ZodObject<{
    [x: string]: any;
} & {
    userId: z.ZodNumber;
}, z.UnknownKeysParam, z.ZodTypeAny, {
    [x: string]: any;
    userId?: unknown;
}, {
    [x: string]: any;
    userId?: unknown;
}>;
export type Claim = z.infer<typeof ClaimUncheckedCreateInputObjectSchema>;
export type ClaimStatus = z.infer<typeof ClaimStatusSchema>;
export declare const claimStatusOptions: {
    [x: string]: any;
};
export type ClaimStatusOptions = (typeof claimStatusOptions)[keyof typeof claimStatusOptions];
export type ClaimFileMeta = {
    id?: number;
    filename: string;
    mimeType?: string | null;
    filePath?: string;
};
export interface InputServiceLine {
    procedureCode: string;
    procedureDate: string;
    quad?: string;
    arch?: string;
    toothNumber?: string;
    toothSurface?: string;
    quantity?: string;
    totalBilled: Decimal;
    totalPaid?: Decimal;
    totalAdjusted?: Decimal;
}
export type ClaimWithServiceLines = Claim & {
    claimNumber?: string | null;
    serviceLines: {
        id: number;
        claimId: number | null;
        procedureCode: string;
        procedureDate: Date;
        quad: string | null;
        arch: string | null;
        toothNumber: string | null;
        toothSurface: string | null;
        totalBilled: Decimal;
        totalPaid: Decimal;
        totalAdjusted: Decimal;
        status: string;
    }[];
    staff?: Staff | null;
    claimFiles?: ClaimFileMeta[] | null;
    npiProvider?: {
        id: number;
        npiNumber: string;
        providerName: string;
    } | null;
};
export type MissingTeethStatus = "No_missing" | "endentulous" | "Yes_missing";
export interface ClaimFormData {
    patientId: number;
    appointmentId?: number | null;
    userId: number;
    staffId: number;
    patientName: string;
    memberId: string;
    dateOfBirth: string;
    remarks: string;
    missingTeethStatus: MissingTeethStatus;
    missingTeeth: Record<string, "X" | "O">;
    serviceDate: string;
    insuranceProvider: string;
    insuranceSiteKey?: string;
    npiProvider?: {
        npiNumber: string;
        providerName: string;
    };
    status: string;
    serviceLines: InputServiceLine[];
    claimId?: number;
    claimFiles?: ClaimFileMeta[];
}
export interface ClaimPreAuthData {
    patientId: number;
    userId: number;
    staffId: number;
    patientName: string;
    memberId: string;
    dateOfBirth: string;
    remarks: string;
    missingTeethStatus: MissingTeethStatus;
    missingTeeth: Record<string, "X" | "O">;
    serviceDate: string;
    insuranceProvider: string;
    insuranceSiteKey?: string;
    npiProvider?: {
        npiNumber: string;
        providerName: string;
    };
    status: string;
    serviceLines: InputServiceLine[];
    claimFiles?: ClaimFileMeta[];
}
//# sourceMappingURL=claim-types.d.ts.map