import * as z from "zod/v3";
import { OpenEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { Reason } from "./reason.js";
export declare enum TimeOff2 {
    True = "true",
    False = "false"
}
/**
 * True if the end of the time off request ends half way through the day
 */
export type TimeOffEndHalfDay = boolean | TimeOff2;
export type TimeOffSchemasPolicy4 = {};
export type TimeOffSchemasPolicySourceValue = string | number | boolean | TimeOffSchemasPolicy4 | Array<any>;
/**
 * The unified value for the duration unit. If the provider does not specify this unit, the value will be set to unknown
 */
export declare enum TimeOffSchemasPolicyValue {
    Minutes = "minutes",
    Hours = "hours",
    Days = "days",
    Weeks = "weeks",
    Months = "months",
    Years = "years",
    Unknown = "unknown",
    UnmappedValue = "unmapped_value"
}
/**
 * The unified value for the duration unit. If the provider does not specify this unit, the value will be set to unknown
 */
export type TimeOffSchemasPolicyValueOpen = OpenEnum<typeof TimeOffSchemasPolicyValue>;
/**
 * The duration unit of the current policy
 */
export type TimeOffDurationUnit = {
    sourceValue?: string | number | boolean | TimeOffSchemasPolicy4 | Array<any> | null | undefined;
    /**
     * The unified value for the duration unit. If the provider does not specify this unit, the value will be set to unknown
     */
    value?: TimeOffSchemasPolicyValueOpen | null | undefined;
};
export type TimeOffSchemasPolicyType4 = {};
export type TimeOffSchemasPolicyTypeSourceValue = string | number | boolean | TimeOffSchemasPolicyType4 | Array<any>;
/**
 * The unified value for the type of the time off policy. If the provider does not specify this unit, the value will be set to unmapped_value
 */
export declare enum TimeOffSchemasPolicyTypeValue {
    Sick = "sick",
    UnmappedValue = "unmapped_value",
    Vacation = "vacation",
    LongTermDisability = "long_term_disability",
    ShortTermDisability = "short_term_disability",
    Absent = "absent",
    CompTime = "comp_time",
    Training = "training",
    AnnualLeave = "annual_leave",
    LeaveOfAbsence = "leave_of_absence",
    Break = "break",
    ChildCareLeave = "child_care_leave",
    MaternityLeave = "maternity_leave",
    JuryDuty = "jury_duty",
    Sabbatical = "sabbatical",
    Accident = "accident",
    Paid = "paid",
    Unpaid = "unpaid",
    Holiday = "holiday",
    Personal = "personal",
    InLieu = "in_lieu",
    Bereavement = "bereavement",
    Other = "other"
}
/**
 * The unified value for the type of the time off policy. If the provider does not specify this unit, the value will be set to unmapped_value
 */
export type TimeOffSchemasPolicyTypeValueOpen = OpenEnum<typeof TimeOffSchemasPolicyTypeValue>;
/**
 * The type of this policy
 */
export type TimeOffSchemasType = {
    sourceValue?: string | number | boolean | TimeOffSchemasPolicyType4 | Array<any> | null | undefined;
    /**
     * The unified value for the type of the time off policy. If the provider does not specify this unit, the value will be set to unmapped_value
     */
    value?: TimeOffSchemasPolicyTypeValueOpen | null | undefined;
};
/**
 * The time off policy associated with Time Off
 */
export type Policy = {
    /**
     * The created_at date of this policy
     */
    createdAt?: Date | null | undefined;
    /**
     * The description of this policy
     */
    description?: string | null | undefined;
    /**
     * The duration unit of the current policy
     */
    durationUnit?: TimeOffDurationUnit | null | undefined;
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    /**
     * The name of this policy
     */
    name?: string | null | undefined;
    reasons?: Array<Reason> | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
    /**
     * The type of this policy
     */
    type?: TimeOffSchemasType | null | undefined;
    /**
     * The updated_at date of this policy
     */
    updatedAt?: Date | null | undefined;
};
export type TimeOffReason = {
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    name?: string | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
};
export declare enum TimeOffSchemas2 {
    True = "true",
    False = "false"
}
/**
 * True if the start of the time off request begins half way through the day
 */
export type TimeOffStartHalfDay = boolean | TimeOffSchemas2;
export type TimeOff4 = {};
export type TimeOffSourceValue = string | number | boolean | TimeOff4 | Array<any>;
export declare enum TimeOffValue {
    Approved = "approved",
    Cancelled = "cancelled",
    Rejected = "rejected",
    Pending = "pending",
    Deleted = "deleted",
    Draft = "draft",
    UnmappedValue = "unmapped_value"
}
export type TimeOffValueOpen = OpenEnum<typeof TimeOffValue>;
/**
 * The status of the time off request
 */
export type TimeOffStatus = {
    sourceValue?: string | number | boolean | TimeOff4 | Array<any> | null | undefined;
    value?: TimeOffValueOpen | null | undefined;
};
export type TimeOffSchemas4 = {};
export type TimeOffSchemasSourceValue = string | number | boolean | TimeOffSchemas4 | Array<any>;
export declare enum TimeOffSchemasValue {
    Sick = "sick",
    UnmappedValue = "unmapped_value",
    Vacation = "vacation",
    LongTermDisability = "long_term_disability",
    ShortTermDisability = "short_term_disability",
    Absent = "absent",
    CompTime = "comp_time",
    Training = "training",
    AnnualLeave = "annual_leave",
    LeaveOfAbsence = "leave_of_absence",
    Break = "break",
    ChildCareLeave = "child_care_leave",
    MaternityLeave = "maternity_leave",
    JuryDuty = "jury_duty",
    Sabbatical = "sabbatical",
    Accident = "accident",
    Paid = "paid",
    Unpaid = "unpaid",
    Holiday = "holiday",
    Personal = "personal",
    InLieu = "in_lieu",
    Bereavement = "bereavement",
    Other = "other"
}
export type TimeOffSchemasValueOpen = OpenEnum<typeof TimeOffSchemasValue>;
/**
 * The type of the time off request
 *
 * @deprecated class: This will be removed in a future release, please migrate away from it as soon as possible.
 */
export type TimeOffType = {
    sourceValue?: string | number | boolean | TimeOffSchemas4 | Array<any> | null | undefined;
    value?: TimeOffSchemasValueOpen | null | undefined;
};
export type TimeOff = {
    /**
     * The approver ID
     */
    approverId?: string | null | undefined;
    /**
     * Allows users to provide additional context or notes for their time off request
     */
    comment?: string | null | undefined;
    /**
     * Timestamp when the time off request was created
     */
    createdAt?: Date | null | undefined;
    /**
     * The duration of the time off request
     */
    duration?: string | null | undefined;
    /**
     * The employee ID
     */
    employeeId?: string | null | undefined;
    /**
     * Inclusive end date of the time off request (ISO8601 date-time without timezone). The time off includes this day
     */
    endDate?: string | null | undefined;
    /**
     * True if the end of the time off request ends half way through the day
     */
    endHalfDay?: boolean | TimeOff2 | null | undefined;
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    /**
     * The time off policy associated with Time Off
     */
    policy?: Policy | null | undefined;
    reason?: TimeOffReason | null | undefined;
    /**
     * Provider's unique identifier of the approver
     */
    remoteApproverId?: string | null | undefined;
    /**
     * Provider's unique identifier of the employee
     */
    remoteEmployeeId?: string | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
    /**
     * Provider's unique identifier of the time off policy id associated with this time off request
     */
    remoteTimeOffPolicyId?: string | null | undefined;
    /**
     * The start date of the time off request (ISO8601 date-time without timezone)
     */
    startDate?: string | null | undefined;
    /**
     * True if the start of the time off request begins half way through the day
     */
    startHalfDay?: boolean | TimeOffSchemas2 | null | undefined;
    /**
     * The status of the time off request
     */
    status?: TimeOffStatus | null | undefined;
    /**
     * The time off policy id associated with this time off request
     */
    timeOffPolicyId?: string | null | undefined;
    /**
     * The type of the time off request
     *
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    type?: TimeOffType | null | undefined;
    /**
     * Timestamp when the time off request was last updated
     */
    updatedAt?: Date | null | undefined;
};
/** @internal */
export declare const TimeOff2$inboundSchema: z.ZodNativeEnum<typeof TimeOff2>;
/** @internal */
export declare const TimeOffEndHalfDay$inboundSchema: z.ZodType<TimeOffEndHalfDay, z.ZodTypeDef, unknown>;
export declare function timeOffEndHalfDayFromJSON(jsonString: string): SafeParseResult<TimeOffEndHalfDay, SDKValidationError>;
/** @internal */
export declare const TimeOffSchemasPolicy4$inboundSchema: z.ZodType<TimeOffSchemasPolicy4, z.ZodTypeDef, unknown>;
export declare function timeOffSchemasPolicy4FromJSON(jsonString: string): SafeParseResult<TimeOffSchemasPolicy4, SDKValidationError>;
/** @internal */
export declare const TimeOffSchemasPolicySourceValue$inboundSchema: z.ZodType<TimeOffSchemasPolicySourceValue, z.ZodTypeDef, unknown>;
export declare function timeOffSchemasPolicySourceValueFromJSON(jsonString: string): SafeParseResult<TimeOffSchemasPolicySourceValue, SDKValidationError>;
/** @internal */
export declare const TimeOffSchemasPolicyValue$inboundSchema: z.ZodType<TimeOffSchemasPolicyValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const TimeOffDurationUnit$inboundSchema: z.ZodType<TimeOffDurationUnit, z.ZodTypeDef, unknown>;
export declare function timeOffDurationUnitFromJSON(jsonString: string): SafeParseResult<TimeOffDurationUnit, SDKValidationError>;
/** @internal */
export declare const TimeOffSchemasPolicyType4$inboundSchema: z.ZodType<TimeOffSchemasPolicyType4, z.ZodTypeDef, unknown>;
export declare function timeOffSchemasPolicyType4FromJSON(jsonString: string): SafeParseResult<TimeOffSchemasPolicyType4, SDKValidationError>;
/** @internal */
export declare const TimeOffSchemasPolicyTypeSourceValue$inboundSchema: z.ZodType<TimeOffSchemasPolicyTypeSourceValue, z.ZodTypeDef, unknown>;
export declare function timeOffSchemasPolicyTypeSourceValueFromJSON(jsonString: string): SafeParseResult<TimeOffSchemasPolicyTypeSourceValue, SDKValidationError>;
/** @internal */
export declare const TimeOffSchemasPolicyTypeValue$inboundSchema: z.ZodType<TimeOffSchemasPolicyTypeValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const TimeOffSchemasType$inboundSchema: z.ZodType<TimeOffSchemasType, z.ZodTypeDef, unknown>;
export declare function timeOffSchemasTypeFromJSON(jsonString: string): SafeParseResult<TimeOffSchemasType, SDKValidationError>;
/** @internal */
export declare const Policy$inboundSchema: z.ZodType<Policy, z.ZodTypeDef, unknown>;
export declare function policyFromJSON(jsonString: string): SafeParseResult<Policy, SDKValidationError>;
/** @internal */
export declare const TimeOffReason$inboundSchema: z.ZodType<TimeOffReason, z.ZodTypeDef, unknown>;
export declare function timeOffReasonFromJSON(jsonString: string): SafeParseResult<TimeOffReason, SDKValidationError>;
/** @internal */
export declare const TimeOffSchemas2$inboundSchema: z.ZodNativeEnum<typeof TimeOffSchemas2>;
/** @internal */
export declare const TimeOffStartHalfDay$inboundSchema: z.ZodType<TimeOffStartHalfDay, z.ZodTypeDef, unknown>;
export declare function timeOffStartHalfDayFromJSON(jsonString: string): SafeParseResult<TimeOffStartHalfDay, SDKValidationError>;
/** @internal */
export declare const TimeOff4$inboundSchema: z.ZodType<TimeOff4, z.ZodTypeDef, unknown>;
export declare function timeOff4FromJSON(jsonString: string): SafeParseResult<TimeOff4, SDKValidationError>;
/** @internal */
export declare const TimeOffSourceValue$inboundSchema: z.ZodType<TimeOffSourceValue, z.ZodTypeDef, unknown>;
export declare function timeOffSourceValueFromJSON(jsonString: string): SafeParseResult<TimeOffSourceValue, SDKValidationError>;
/** @internal */
export declare const TimeOffValue$inboundSchema: z.ZodType<TimeOffValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const TimeOffStatus$inboundSchema: z.ZodType<TimeOffStatus, z.ZodTypeDef, unknown>;
export declare function timeOffStatusFromJSON(jsonString: string): SafeParseResult<TimeOffStatus, SDKValidationError>;
/** @internal */
export declare const TimeOffSchemas4$inboundSchema: z.ZodType<TimeOffSchemas4, z.ZodTypeDef, unknown>;
export declare function timeOffSchemas4FromJSON(jsonString: string): SafeParseResult<TimeOffSchemas4, SDKValidationError>;
/** @internal */
export declare const TimeOffSchemasSourceValue$inboundSchema: z.ZodType<TimeOffSchemasSourceValue, z.ZodTypeDef, unknown>;
export declare function timeOffSchemasSourceValueFromJSON(jsonString: string): SafeParseResult<TimeOffSchemasSourceValue, SDKValidationError>;
/** @internal */
export declare const TimeOffSchemasValue$inboundSchema: z.ZodType<TimeOffSchemasValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const TimeOffType$inboundSchema: z.ZodType<TimeOffType, z.ZodTypeDef, unknown>;
export declare function timeOffTypeFromJSON(jsonString: string): SafeParseResult<TimeOffType, SDKValidationError>;
/** @internal */
export declare const TimeOff$inboundSchema: z.ZodType<TimeOff, z.ZodTypeDef, unknown>;
export declare function timeOffFromJSON(jsonString: string): SafeParseResult<TimeOff, SDKValidationError>;
//# sourceMappingURL=timeoff.d.ts.map