import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { PassThroughBody, PassThroughBody$Outbound } from "./passthroughbody.js";
/**
 * The status of the time off request.
 */
export declare const TimeOffRequestStatusStatus: {
    readonly Requested: "requested";
    readonly Approved: "approved";
    readonly Declined: "declined";
    readonly Cancelled: "cancelled";
    readonly Deleted: "deleted";
    readonly Other: "other";
};
/**
 * The status of the time off request.
 */
export type TimeOffRequestStatusStatus = ClosedEnum<typeof TimeOffRequestStatusStatus>;
/**
 * The type of request
 */
export declare const RequestType: {
    readonly Vacation: "vacation";
    readonly Sick: "sick";
    readonly Personal: "personal";
    readonly JuryDuty: "jury_duty";
    readonly Volunteer: "volunteer";
    readonly Bereavement: "bereavement";
    readonly Other: "other";
};
/**
 * The type of request
 */
export type RequestType = ClosedEnum<typeof RequestType>;
/**
 * The unit of time off requested. Possible values include: `hours`, `days`, or `other`.
 */
export declare const Units: {
    readonly Days: "days";
    readonly Hours: "hours";
    readonly Other: "other";
};
/**
 * The unit of time off requested. Possible values include: `hours`, `days`, or `other`.
 */
export type Units = ClosedEnum<typeof Units>;
export type Notes = {
    employee?: string | null | undefined;
    manager?: string | null | undefined;
};
export type TimeOffRequest = {
    /**
     * A unique identifier for an object.
     */
    id?: string | undefined;
    /**
     * ID of the employee
     */
    employeeId?: string | null | undefined;
    /**
     * ID of the policy
     */
    policyId?: string | null | undefined;
    /**
     * The status of the time off request.
     */
    status?: TimeOffRequestStatusStatus | null | undefined;
    /**
     * Description of the time off request.
     */
    description?: string | null | undefined;
    /**
     * The start date of the time off request.
     */
    startDate?: string | null | undefined;
    /**
     * The end date of the time off request.
     */
    endDate?: string | null | undefined;
    /**
     * The date the request was made.
     */
    requestDate?: string | null | undefined;
    /**
     * The type of request
     */
    requestType?: RequestType | null | undefined;
    /**
     * The date the request was approved
     */
    approvalDate?: string | null | undefined;
    /**
     * The unit of time off requested. Possible values include: `hours`, `days`, or `other`.
     */
    units?: Units | null | undefined;
    /**
     * The amount of time off requested.
     */
    amount?: number | null | undefined;
    /**
     * The day part of the time off request.
     */
    dayPart?: string | null | undefined;
    notes?: Notes | undefined;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     */
    customMappings?: {
        [k: string]: any;
    } | null | undefined;
    /**
     * The user who last updated the object.
     */
    updatedBy?: string | null | undefined;
    /**
     * The user who created the object.
     */
    createdBy?: string | null | undefined;
    /**
     * The date and time when the object was last updated.
     */
    updatedAt?: Date | null | undefined;
    /**
     * The date and time when the object was created.
     */
    createdAt?: Date | null | undefined;
    /**
     * The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.
     */
    passThrough?: Array<PassThroughBody> | undefined;
    /**
     * The policy type of the time off request
     */
    policyType?: string | undefined;
};
export type TimeOffRequestInput = {
    /**
     * ID of the employee
     */
    employeeId?: string | null | undefined;
    /**
     * ID of the policy
     */
    policyId?: string | null | undefined;
    /**
     * The status of the time off request.
     */
    status?: TimeOffRequestStatusStatus | null | undefined;
    /**
     * Description of the time off request.
     */
    description?: string | null | undefined;
    /**
     * The start date of the time off request.
     */
    startDate?: string | null | undefined;
    /**
     * The end date of the time off request.
     */
    endDate?: string | null | undefined;
    /**
     * The date the request was made.
     */
    requestDate?: string | null | undefined;
    /**
     * The type of request
     */
    requestType?: RequestType | null | undefined;
    /**
     * The date the request was approved
     */
    approvalDate?: string | null | undefined;
    /**
     * The unit of time off requested. Possible values include: `hours`, `days`, or `other`.
     */
    units?: Units | null | undefined;
    /**
     * The amount of time off requested.
     */
    amount?: number | null | undefined;
    /**
     * The day part of the time off request.
     */
    dayPart?: string | null | undefined;
    notes?: Notes | undefined;
    /**
     * The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.
     */
    passThrough?: Array<PassThroughBody> | undefined;
    /**
     * The policy type of the time off request
     */
    policyType?: string | undefined;
};
/** @internal */
export declare const TimeOffRequestStatusStatus$inboundSchema: z.ZodNativeEnum<typeof TimeOffRequestStatusStatus>;
/** @internal */
export declare const TimeOffRequestStatusStatus$outboundSchema: z.ZodNativeEnum<typeof TimeOffRequestStatusStatus>;
/** @internal */
export declare const RequestType$inboundSchema: z.ZodNativeEnum<typeof RequestType>;
/** @internal */
export declare const RequestType$outboundSchema: z.ZodNativeEnum<typeof RequestType>;
/** @internal */
export declare const Units$inboundSchema: z.ZodNativeEnum<typeof Units>;
/** @internal */
export declare const Units$outboundSchema: z.ZodNativeEnum<typeof Units>;
/** @internal */
export declare const Notes$inboundSchema: z.ZodType<Notes, z.ZodTypeDef, unknown>;
/** @internal */
export type Notes$Outbound = {
    employee?: string | null | undefined;
    manager?: string | null | undefined;
};
/** @internal */
export declare const Notes$outboundSchema: z.ZodType<Notes$Outbound, z.ZodTypeDef, Notes>;
export declare function notesToJSON(notes: Notes): string;
export declare function notesFromJSON(jsonString: string): SafeParseResult<Notes, SDKValidationError>;
/** @internal */
export declare const TimeOffRequest$inboundSchema: z.ZodType<TimeOffRequest, z.ZodTypeDef, unknown>;
export declare function timeOffRequestFromJSON(jsonString: string): SafeParseResult<TimeOffRequest, SDKValidationError>;
/** @internal */
export type TimeOffRequestInput$Outbound = {
    employee_id?: string | null | undefined;
    policy_id?: string | null | undefined;
    status?: string | null | undefined;
    description?: string | null | undefined;
    start_date?: string | null | undefined;
    end_date?: string | null | undefined;
    request_date?: string | null | undefined;
    request_type?: string | null | undefined;
    approval_date?: string | null | undefined;
    units?: string | null | undefined;
    amount?: number | null | undefined;
    day_part?: string | null | undefined;
    notes?: Notes$Outbound | undefined;
    pass_through?: Array<PassThroughBody$Outbound> | undefined;
    policy_type?: string | undefined;
};
/** @internal */
export declare const TimeOffRequestInput$outboundSchema: z.ZodType<TimeOffRequestInput$Outbound, z.ZodTypeDef, TimeOffRequestInput>;
export declare function timeOffRequestInputToJSON(timeOffRequestInput: TimeOffRequestInput): string;
//# sourceMappingURL=timeoffrequest.d.ts.map