import { z } from 'zod';
export declare const createLeaveSchema: z.ZodObject<{
    member_id: z.ZodString;
    start_date: z.ZodCoercedDate<unknown>;
    end_date: z.ZodCoercedDate<unknown>;
    approver_id: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    approver_type: z.ZodOptional<z.ZodEnum<{
        owner: "owner";
        member: "member";
    }>>;
    leave_type: z.ZodOptional<z.ZodEnum<{
        annual: "annual";
        sick: "sick";
        casual: "casual";
        maternity: "maternity";
        paternity: "paternity";
        personal: "personal";
        compensatory: "compensatory";
        unpaid: "unpaid";
        day_off: "day_off";
    }>>;
    reason: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    status: z.ZodOptional<z.ZodEnum<{
        pending: "pending";
        approved: "approved";
        rejected: "rejected";
        cancelled: "cancelled";
    }>>;
    document: z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<any, any>>>;
}, z.core.$strip>;
export declare const updateLeaveSchema: z.ZodObject<{
    member_id: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    start_date: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodCoercedDate<unknown>>>;
    end_date: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodCoercedDate<unknown>>>;
    reason: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    approver_id: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    approver_type: z.ZodOptional<z.ZodEnum<{
        owner: "owner";
        member: "member";
    }>>;
    status: z.ZodOptional<z.ZodEnum<{
        pending: "pending";
        approved: "approved";
        rejected: "rejected";
        cancelled: "cancelled";
    }>>;
    document: z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<any, any>>>>;
}, z.core.$strip>;
export declare const updateLeaveStatusSchema: z.ZodObject<{
    status: z.ZodEnum<{
        pending: "pending";
        approved: "approved";
        rejected: "rejected";
        cancelled: "cancelled";
    }>;
    approver_type: z.ZodOptional<z.ZodEnum<{
        owner: "owner";
        member: "member";
    }>>;
    approver_id: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
}, z.core.$strip>;
export declare const leaveFilterSchema: z.ZodPipe<z.ZodObject<{
    member_id: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    memberId: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    status: z.ZodOptional<z.ZodEnum<{
        pending: "pending";
        approved: "approved";
        rejected: "rejected";
        cancelled: "cancelled";
    }>>;
    start_date: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    end_date: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    department_id: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    data_scope: z.ZodOptional<z.ZodEnum<{
        own: "own";
        all: "all";
    }>>;
    page: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDefault<z.ZodNumber>>;
    limit: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDefault<z.ZodNumber>>;
}, z.core.$strip>, z.ZodTransform<{
    member_id: string;
    status?: "pending" | "approved" | "rejected" | "cancelled";
    start_date?: string;
    end_date?: string;
    department_id?: string;
    data_scope?: "own" | "all";
    page?: number;
    limit?: number;
}, {
    member_id?: string;
    memberId?: string;
    status?: "pending" | "approved" | "rejected" | "cancelled";
    start_date?: string;
    end_date?: string;
    department_id?: string;
    data_scope?: "own" | "all";
    page?: number;
    limit?: number;
}>>;
export declare const leaveResponseSchema: z.ZodObject<{
    id: z.ZodOptional<z.ZodString>;
    member_id: z.ZodOptional<z.ZodString>;
    member: z.ZodNullable<z.ZodOptional<z.ZodObject<{
        id: z.ZodString;
        employee_id: z.ZodString;
        first_name: z.ZodString;
        last_name: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
        nickname: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
        image: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<{
            file_name: string;
            original_name: string;
            file_size: number;
            mime_type: string;
        }, any>>>>>;
        role: z.ZodOptional<z.ZodEnum<{
            owner: "owner";
            admin: "admin";
            member: "member";
        }>>;
        department: z.ZodOptional<z.ZodNullable<z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
        }, z.core.$strip>>>;
    }, z.core.$strip>>>;
    start_date: z.ZodOptional<z.ZodPipe<z.ZodDate, z.ZodTransform<string, Date>>>;
    end_date: z.ZodOptional<z.ZodPipe<z.ZodDate, z.ZodTransform<string, Date>>>;
    reason: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
    document: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodAny, z.ZodTransform<{
        file_name: string;
        original_name: string;
        file_size: number;
        mime_type: string;
    }, any>>>>;
    status: z.ZodOptional<z.ZodEnum<{
        pending: "pending";
        approved: "approved";
        rejected: "rejected";
        cancelled: "cancelled";
    }>>;
    leave_type: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    approver_type: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
        owner: "owner";
        member: "member";
    }>>>;
    approver_owner_id: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    approver_member_id: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    approver_owner: z.ZodNullable<z.ZodOptional<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        email: z.ZodString;
        image: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<{
            file_name: string;
            original_name: string;
            file_size: number;
            mime_type: string;
        }, any>>>>>;
    }, z.core.$strip>>>;
    approver_member: z.ZodNullable<z.ZodOptional<z.ZodObject<{
        id: z.ZodString;
        employee_id: z.ZodString;
        first_name: z.ZodString;
        last_name: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
        nickname: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
        image: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<{
            file_name: string;
            original_name: string;
            file_size: number;
            mime_type: string;
        }, any>>>>>;
        role: z.ZodOptional<z.ZodEnum<{
            owner: "owner";
            admin: "admin";
            member: "member";
        }>>;
        department: z.ZodOptional<z.ZodNullable<z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
        }, z.core.$strip>>>;
    }, z.core.$strip>>>;
    approved_at: z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodDate, z.ZodTransform<string, Date>>>>;
    created_at: z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<string, any>>>>;
    updated_at: z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<string, any>>>>;
}, z.core.$strip>;
export declare const leaveBalanceResponseSchema: z.ZodObject<{
    id: z.ZodString;
    member_id: z.ZodString;
    first_name: z.ZodOptional<z.ZodString>;
    last_name: z.ZodOptional<z.ZodString>;
    image: z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<{
        file_name: string;
        original_name: string;
        file_size: number;
        mime_type: string;
    }, any>>>;
    department_id: z.ZodOptional<z.ZodString>;
    department_name: z.ZodOptional<z.ZodString>;
    used_leaves: z.ZodOptional<z.ZodNumber>;
    remaining_leaves: z.ZodOptional<z.ZodNumber>;
    total_leaves: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
export declare const bulkUpdateLeaveStatusSchema: z.ZodObject<{
    leave_ids: z.ZodArray<z.ZodString>;
    status: z.ZodEnum<{
        pending: "pending";
        approved: "approved";
        rejected: "rejected";
        cancelled: "cancelled";
    }>;
    approver_type: z.ZodOptional<z.ZodEnum<{
        owner: "owner";
        member: "member";
    }>>;
    approver_id: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
}, z.core.$strip>;
export declare const leavesResponseSchema: z.ZodArray<z.ZodObject<{
    id: z.ZodOptional<z.ZodString>;
    member_id: z.ZodOptional<z.ZodString>;
    member: z.ZodNullable<z.ZodOptional<z.ZodObject<{
        id: z.ZodString;
        employee_id: z.ZodString;
        first_name: z.ZodString;
        last_name: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
        nickname: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
        image: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<{
            file_name: string;
            original_name: string;
            file_size: number;
            mime_type: string;
        }, any>>>>>;
        role: z.ZodOptional<z.ZodEnum<{
            owner: "owner";
            admin: "admin";
            member: "member";
        }>>;
        department: z.ZodOptional<z.ZodNullable<z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
        }, z.core.$strip>>>;
    }, z.core.$strip>>>;
    start_date: z.ZodOptional<z.ZodPipe<z.ZodDate, z.ZodTransform<string, Date>>>;
    end_date: z.ZodOptional<z.ZodPipe<z.ZodDate, z.ZodTransform<string, Date>>>;
    reason: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
    document: z.ZodOptional<z.ZodNullable<z.ZodPipe<z.ZodAny, z.ZodTransform<{
        file_name: string;
        original_name: string;
        file_size: number;
        mime_type: string;
    }, any>>>>;
    status: z.ZodOptional<z.ZodEnum<{
        pending: "pending";
        approved: "approved";
        rejected: "rejected";
        cancelled: "cancelled";
    }>>;
    leave_type: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
    approver_type: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
        owner: "owner";
        member: "member";
    }>>>;
    approver_owner_id: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    approver_member_id: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    approver_owner: z.ZodNullable<z.ZodOptional<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        email: z.ZodString;
        image: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<{
            file_name: string;
            original_name: string;
            file_size: number;
            mime_type: string;
        }, any>>>>>;
    }, z.core.$strip>>>;
    approver_member: z.ZodNullable<z.ZodOptional<z.ZodObject<{
        id: z.ZodString;
        employee_id: z.ZodString;
        first_name: z.ZodString;
        last_name: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
        nickname: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
        image: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<{
            file_name: string;
            original_name: string;
            file_size: number;
            mime_type: string;
        }, any>>>>>;
        role: z.ZodOptional<z.ZodEnum<{
            owner: "owner";
            admin: "admin";
            member: "member";
        }>>;
        department: z.ZodOptional<z.ZodNullable<z.ZodObject<{
            id: z.ZodString;
            name: z.ZodString;
        }, z.core.$strip>>>;
    }, z.core.$strip>>>;
    approved_at: z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodDate, z.ZodTransform<string, Date>>>>;
    created_at: z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<string, any>>>>;
    updated_at: z.ZodNullable<z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<string, any>>>>;
}, z.core.$strip>>;
export declare const leaveBalanceResponseArraySchema: z.ZodArray<z.ZodObject<{
    id: z.ZodString;
    member_id: z.ZodString;
    first_name: z.ZodOptional<z.ZodString>;
    last_name: z.ZodOptional<z.ZodString>;
    image: z.ZodOptional<z.ZodPipe<z.ZodAny, z.ZodTransform<{
        file_name: string;
        original_name: string;
        file_size: number;
        mime_type: string;
    }, any>>>;
    department_id: z.ZodOptional<z.ZodString>;
    department_name: z.ZodOptional<z.ZodString>;
    used_leaves: z.ZodOptional<z.ZodNumber>;
    remaining_leaves: z.ZodOptional<z.ZodNumber>;
    total_leaves: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>>;
export type createLeaveDto = z.infer<typeof createLeaveSchema>;
export type updateLeaveDto = z.infer<typeof updateLeaveSchema>;
export type updateLeaveStatusDto = z.infer<typeof updateLeaveStatusSchema>;
export type leaveFilterDto = z.infer<typeof leaveFilterSchema>;
export type leaveResponseDto = z.infer<typeof leaveResponseSchema>;
export type leavesResponseDto = z.infer<typeof leavesResponseSchema>;
export type bulkUpdateLeaveStatusDto = z.infer<typeof bulkUpdateLeaveStatusSchema>;
export type leaveBalanceResponseDto = z.infer<typeof leaveBalanceResponseSchema>;
export type leaveBalanceResponseArrayDto = z.infer<typeof leaveBalanceResponseArraySchema>;
