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 type TimeOffBalances4 = {};
export type TimeOffBalancesSourceValue = string | number | boolean | TimeOffBalances4 | 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 TimeOffBalancesValue {
    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 TimeOffBalancesValueOpen = OpenEnum<typeof TimeOffBalancesValue>;
/**
 * The duration unit of the current balance
 */
export type BalanceUnit = {
    sourceValue?: string | number | boolean | TimeOffBalances4 | 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?: TimeOffBalancesValueOpen | null | undefined;
};
export declare enum TimeOffBalances2 {
    True = "true",
    False = "false"
}
/**
 * Indicates if this time off balance represents unlimited leave
 */
export type IsUnlimited = boolean | TimeOffBalances2;
export type TimeOffBalancesSchemas4 = {};
export type TimeOffBalancesSchemasSourceValue = string | number | boolean | TimeOffBalancesSchemas4 | 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 TimeOffBalancesSchemasValue {
    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 TimeOffBalancesSchemasValueOpen = OpenEnum<typeof TimeOffBalancesSchemasValue>;
/**
 * The duration unit of the current policy
 */
export type TimeOffBalancesDurationUnit = {
    sourceValue?: string | number | boolean | TimeOffBalancesSchemas4 | 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?: TimeOffBalancesSchemasValueOpen | null | undefined;
};
export type TimeOffBalancesSchemasPolicy4 = {};
export type TimeOffBalancesSchemasPolicySourceValue = string | number | boolean | TimeOffBalancesSchemasPolicy4 | 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 TimeOffBalancesSchemasPolicyValue {
    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 TimeOffBalancesSchemasPolicyValueOpen = OpenEnum<typeof TimeOffBalancesSchemasPolicyValue>;
/**
 * The type of this policy
 */
export type TimeOffBalancesType = {
    sourceValue?: string | number | boolean | TimeOffBalancesSchemasPolicy4 | 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?: TimeOffBalancesSchemasPolicyValueOpen | null | undefined;
};
/**
 * The time off policy associated with this balance
 */
export type TimeOffBalancesPolicy = {
    /**
     * 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?: TimeOffBalancesDurationUnit | 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?: TimeOffBalancesType | null | undefined;
    /**
     * The updated_at date of this policy
     */
    updatedAt?: Date | null | undefined;
};
export type TimeOffBalances = {
    /**
     * The date of when the current balance expires
     */
    balanceExpiryDate?: Date | null | undefined;
    /**
     * The date of when the initial balance quantity was set
     */
    balanceStartDate?: Date | null | undefined;
    /**
     * The duration unit of the current balance
     */
    balanceUnit?: BalanceUnit | null | undefined;
    /**
     * The current numeric balance for the associated employee and time off policy
     */
    currentBalance?: number | null | undefined;
    /**
     * The employee id associated with this balance
     */
    employeeId?: string | null | undefined;
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    /**
     * The initial numeric balance for the associated employee and time off policy as of the balance start date
     */
    initialBalance?: number | null | undefined;
    /**
     * Indicates if this time off balance represents unlimited leave
     */
    isUnlimited?: boolean | TimeOffBalances2 | null | undefined;
    /**
     * The time off policy associated with this balance
     */
    policy?: TimeOffBalancesPolicy | null | undefined;
    /**
     * The time off policy id associated with this balance
     */
    policyId?: string | null | undefined;
    /**
     * Provider's unique identifier of the employee associated with this balance
     */
    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 balance
     */
    remotePolicyId?: string | null | undefined;
    /**
     * The updated_at date of this time off balance
     */
    updatedAt?: Date | null | undefined;
};
/** @internal */
export declare const TimeOffBalances4$inboundSchema: z.ZodType<TimeOffBalances4, z.ZodTypeDef, unknown>;
export declare function timeOffBalances4FromJSON(jsonString: string): SafeParseResult<TimeOffBalances4, SDKValidationError>;
/** @internal */
export declare const TimeOffBalancesSourceValue$inboundSchema: z.ZodType<TimeOffBalancesSourceValue, z.ZodTypeDef, unknown>;
export declare function timeOffBalancesSourceValueFromJSON(jsonString: string): SafeParseResult<TimeOffBalancesSourceValue, SDKValidationError>;
/** @internal */
export declare const TimeOffBalancesValue$inboundSchema: z.ZodType<TimeOffBalancesValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const BalanceUnit$inboundSchema: z.ZodType<BalanceUnit, z.ZodTypeDef, unknown>;
export declare function balanceUnitFromJSON(jsonString: string): SafeParseResult<BalanceUnit, SDKValidationError>;
/** @internal */
export declare const TimeOffBalances2$inboundSchema: z.ZodNativeEnum<typeof TimeOffBalances2>;
/** @internal */
export declare const IsUnlimited$inboundSchema: z.ZodType<IsUnlimited, z.ZodTypeDef, unknown>;
export declare function isUnlimitedFromJSON(jsonString: string): SafeParseResult<IsUnlimited, SDKValidationError>;
/** @internal */
export declare const TimeOffBalancesSchemas4$inboundSchema: z.ZodType<TimeOffBalancesSchemas4, z.ZodTypeDef, unknown>;
export declare function timeOffBalancesSchemas4FromJSON(jsonString: string): SafeParseResult<TimeOffBalancesSchemas4, SDKValidationError>;
/** @internal */
export declare const TimeOffBalancesSchemasSourceValue$inboundSchema: z.ZodType<TimeOffBalancesSchemasSourceValue, z.ZodTypeDef, unknown>;
export declare function timeOffBalancesSchemasSourceValueFromJSON(jsonString: string): SafeParseResult<TimeOffBalancesSchemasSourceValue, SDKValidationError>;
/** @internal */
export declare const TimeOffBalancesSchemasValue$inboundSchema: z.ZodType<TimeOffBalancesSchemasValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const TimeOffBalancesDurationUnit$inboundSchema: z.ZodType<TimeOffBalancesDurationUnit, z.ZodTypeDef, unknown>;
export declare function timeOffBalancesDurationUnitFromJSON(jsonString: string): SafeParseResult<TimeOffBalancesDurationUnit, SDKValidationError>;
/** @internal */
export declare const TimeOffBalancesSchemasPolicy4$inboundSchema: z.ZodType<TimeOffBalancesSchemasPolicy4, z.ZodTypeDef, unknown>;
export declare function timeOffBalancesSchemasPolicy4FromJSON(jsonString: string): SafeParseResult<TimeOffBalancesSchemasPolicy4, SDKValidationError>;
/** @internal */
export declare const TimeOffBalancesSchemasPolicySourceValue$inboundSchema: z.ZodType<TimeOffBalancesSchemasPolicySourceValue, z.ZodTypeDef, unknown>;
export declare function timeOffBalancesSchemasPolicySourceValueFromJSON(jsonString: string): SafeParseResult<TimeOffBalancesSchemasPolicySourceValue, SDKValidationError>;
/** @internal */
export declare const TimeOffBalancesSchemasPolicyValue$inboundSchema: z.ZodType<TimeOffBalancesSchemasPolicyValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const TimeOffBalancesType$inboundSchema: z.ZodType<TimeOffBalancesType, z.ZodTypeDef, unknown>;
export declare function timeOffBalancesTypeFromJSON(jsonString: string): SafeParseResult<TimeOffBalancesType, SDKValidationError>;
/** @internal */
export declare const TimeOffBalancesPolicy$inboundSchema: z.ZodType<TimeOffBalancesPolicy, z.ZodTypeDef, unknown>;
export declare function timeOffBalancesPolicyFromJSON(jsonString: string): SafeParseResult<TimeOffBalancesPolicy, SDKValidationError>;
/** @internal */
export declare const TimeOffBalances$inboundSchema: z.ZodType<TimeOffBalances, z.ZodTypeDef, unknown>;
export declare function timeOffBalancesFromJSON(jsonString: string): SafeParseResult<TimeOffBalances, SDKValidationError>;
//# sourceMappingURL=timeoffbalances.d.ts.map