import * as z from "zod";
import { OpenEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { Reason, Reason$Outbound } from "./reason.js";
export type TimeOffPolicies4 = {};
export type TimeOffPoliciesSourceValue = TimeOffPolicies4 | string | number | boolean | 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 TimeOffPoliciesValue {
    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 TimeOffPoliciesValueOpen = OpenEnum<typeof TimeOffPoliciesValue>;
/**
 * The duration unit of the current policy
 */
export type DurationUnit = {
    sourceValue?: TimeOffPolicies4 | string | number | boolean | 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?: TimeOffPoliciesValueOpen | null | undefined;
};
export type TimeOffPoliciesSchemas4 = {};
export type TimeOffPoliciesSchemasSourceValue = TimeOffPoliciesSchemas4 | string | number | boolean | 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 TimeOffPoliciesSchemasValue {
    Paid = "paid",
    Unpaid = "unpaid",
    Holiday = "holiday",
    Vacation = "vacation",
    Sick = "sick",
    Personal = "personal",
    InLieu = "in_lieu",
    Bereavement = "bereavement",
    JuryDuty = "jury_duty",
    UnmappedValue = "unmapped_value"
}
/**
 * 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 TimeOffPoliciesSchemasValueOpen = OpenEnum<typeof TimeOffPoliciesSchemasValue>;
/**
 * The type of this policy
 */
export type TimeOffPoliciesType = {
    sourceValue?: TimeOffPoliciesSchemas4 | string | number | boolean | 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?: TimeOffPoliciesSchemasValueOpen | null | undefined;
};
export type TimeOffPolicies = {
    /**
     * 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?: DurationUnit | 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?: TimeOffPoliciesType | null | undefined;
    /**
     * The updated_at date of this policy
     */
    updatedAt?: Date | null | undefined;
};
/** @internal */
export declare const TimeOffPolicies4$inboundSchema: z.ZodType<TimeOffPolicies4, z.ZodTypeDef, unknown>;
/** @internal */
export type TimeOffPolicies4$Outbound = {};
/** @internal */
export declare const TimeOffPolicies4$outboundSchema: z.ZodType<TimeOffPolicies4$Outbound, z.ZodTypeDef, TimeOffPolicies4>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TimeOffPolicies4$ {
    /** @deprecated use `TimeOffPolicies4$inboundSchema` instead. */
    const inboundSchema: z.ZodType<TimeOffPolicies4, z.ZodTypeDef, unknown>;
    /** @deprecated use `TimeOffPolicies4$outboundSchema` instead. */
    const outboundSchema: z.ZodType<TimeOffPolicies4$Outbound, z.ZodTypeDef, TimeOffPolicies4>;
    /** @deprecated use `TimeOffPolicies4$Outbound` instead. */
    type Outbound = TimeOffPolicies4$Outbound;
}
export declare function timeOffPolicies4ToJSON(timeOffPolicies4: TimeOffPolicies4): string;
export declare function timeOffPolicies4FromJSON(jsonString: string): SafeParseResult<TimeOffPolicies4, SDKValidationError>;
/** @internal */
export declare const TimeOffPoliciesSourceValue$inboundSchema: z.ZodType<TimeOffPoliciesSourceValue, z.ZodTypeDef, unknown>;
/** @internal */
export type TimeOffPoliciesSourceValue$Outbound = TimeOffPolicies4$Outbound | string | number | boolean | Array<any>;
/** @internal */
export declare const TimeOffPoliciesSourceValue$outboundSchema: z.ZodType<TimeOffPoliciesSourceValue$Outbound, z.ZodTypeDef, TimeOffPoliciesSourceValue>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TimeOffPoliciesSourceValue$ {
    /** @deprecated use `TimeOffPoliciesSourceValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<TimeOffPoliciesSourceValue, z.ZodTypeDef, unknown>;
    /** @deprecated use `TimeOffPoliciesSourceValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<TimeOffPoliciesSourceValue$Outbound, z.ZodTypeDef, TimeOffPoliciesSourceValue>;
    /** @deprecated use `TimeOffPoliciesSourceValue$Outbound` instead. */
    type Outbound = TimeOffPoliciesSourceValue$Outbound;
}
export declare function timeOffPoliciesSourceValueToJSON(timeOffPoliciesSourceValue: TimeOffPoliciesSourceValue): string;
export declare function timeOffPoliciesSourceValueFromJSON(jsonString: string): SafeParseResult<TimeOffPoliciesSourceValue, SDKValidationError>;
/** @internal */
export declare const TimeOffPoliciesValue$inboundSchema: z.ZodType<TimeOffPoliciesValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const TimeOffPoliciesValue$outboundSchema: z.ZodType<TimeOffPoliciesValueOpen, z.ZodTypeDef, TimeOffPoliciesValueOpen>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TimeOffPoliciesValue$ {
    /** @deprecated use `TimeOffPoliciesValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<TimeOffPoliciesValueOpen, z.ZodTypeDef, unknown>;
    /** @deprecated use `TimeOffPoliciesValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<TimeOffPoliciesValueOpen, z.ZodTypeDef, TimeOffPoliciesValueOpen>;
}
/** @internal */
export declare const DurationUnit$inboundSchema: z.ZodType<DurationUnit, z.ZodTypeDef, unknown>;
/** @internal */
export type DurationUnit$Outbound = {
    source_value?: TimeOffPolicies4$Outbound | string | number | boolean | Array<any> | null | undefined;
    value?: string | null | undefined;
};
/** @internal */
export declare const DurationUnit$outboundSchema: z.ZodType<DurationUnit$Outbound, z.ZodTypeDef, DurationUnit>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace DurationUnit$ {
    /** @deprecated use `DurationUnit$inboundSchema` instead. */
    const inboundSchema: z.ZodType<DurationUnit, z.ZodTypeDef, unknown>;
    /** @deprecated use `DurationUnit$outboundSchema` instead. */
    const outboundSchema: z.ZodType<DurationUnit$Outbound, z.ZodTypeDef, DurationUnit>;
    /** @deprecated use `DurationUnit$Outbound` instead. */
    type Outbound = DurationUnit$Outbound;
}
export declare function durationUnitToJSON(durationUnit: DurationUnit): string;
export declare function durationUnitFromJSON(jsonString: string): SafeParseResult<DurationUnit, SDKValidationError>;
/** @internal */
export declare const TimeOffPoliciesSchemas4$inboundSchema: z.ZodType<TimeOffPoliciesSchemas4, z.ZodTypeDef, unknown>;
/** @internal */
export type TimeOffPoliciesSchemas4$Outbound = {};
/** @internal */
export declare const TimeOffPoliciesSchemas4$outboundSchema: z.ZodType<TimeOffPoliciesSchemas4$Outbound, z.ZodTypeDef, TimeOffPoliciesSchemas4>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TimeOffPoliciesSchemas4$ {
    /** @deprecated use `TimeOffPoliciesSchemas4$inboundSchema` instead. */
    const inboundSchema: z.ZodType<TimeOffPoliciesSchemas4, z.ZodTypeDef, unknown>;
    /** @deprecated use `TimeOffPoliciesSchemas4$outboundSchema` instead. */
    const outboundSchema: z.ZodType<TimeOffPoliciesSchemas4$Outbound, z.ZodTypeDef, TimeOffPoliciesSchemas4>;
    /** @deprecated use `TimeOffPoliciesSchemas4$Outbound` instead. */
    type Outbound = TimeOffPoliciesSchemas4$Outbound;
}
export declare function timeOffPoliciesSchemas4ToJSON(timeOffPoliciesSchemas4: TimeOffPoliciesSchemas4): string;
export declare function timeOffPoliciesSchemas4FromJSON(jsonString: string): SafeParseResult<TimeOffPoliciesSchemas4, SDKValidationError>;
/** @internal */
export declare const TimeOffPoliciesSchemasSourceValue$inboundSchema: z.ZodType<TimeOffPoliciesSchemasSourceValue, z.ZodTypeDef, unknown>;
/** @internal */
export type TimeOffPoliciesSchemasSourceValue$Outbound = TimeOffPoliciesSchemas4$Outbound | string | number | boolean | Array<any>;
/** @internal */
export declare const TimeOffPoliciesSchemasSourceValue$outboundSchema: z.ZodType<TimeOffPoliciesSchemasSourceValue$Outbound, z.ZodTypeDef, TimeOffPoliciesSchemasSourceValue>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TimeOffPoliciesSchemasSourceValue$ {
    /** @deprecated use `TimeOffPoliciesSchemasSourceValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<TimeOffPoliciesSchemasSourceValue, z.ZodTypeDef, unknown>;
    /** @deprecated use `TimeOffPoliciesSchemasSourceValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<TimeOffPoliciesSchemasSourceValue$Outbound, z.ZodTypeDef, TimeOffPoliciesSchemasSourceValue>;
    /** @deprecated use `TimeOffPoliciesSchemasSourceValue$Outbound` instead. */
    type Outbound = TimeOffPoliciesSchemasSourceValue$Outbound;
}
export declare function timeOffPoliciesSchemasSourceValueToJSON(timeOffPoliciesSchemasSourceValue: TimeOffPoliciesSchemasSourceValue): string;
export declare function timeOffPoliciesSchemasSourceValueFromJSON(jsonString: string): SafeParseResult<TimeOffPoliciesSchemasSourceValue, SDKValidationError>;
/** @internal */
export declare const TimeOffPoliciesSchemasValue$inboundSchema: z.ZodType<TimeOffPoliciesSchemasValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const TimeOffPoliciesSchemasValue$outboundSchema: z.ZodType<TimeOffPoliciesSchemasValueOpen, z.ZodTypeDef, TimeOffPoliciesSchemasValueOpen>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TimeOffPoliciesSchemasValue$ {
    /** @deprecated use `TimeOffPoliciesSchemasValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<TimeOffPoliciesSchemasValueOpen, z.ZodTypeDef, unknown>;
    /** @deprecated use `TimeOffPoliciesSchemasValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<TimeOffPoliciesSchemasValueOpen, z.ZodTypeDef, TimeOffPoliciesSchemasValueOpen>;
}
/** @internal */
export declare const TimeOffPoliciesType$inboundSchema: z.ZodType<TimeOffPoliciesType, z.ZodTypeDef, unknown>;
/** @internal */
export type TimeOffPoliciesType$Outbound = {
    source_value?: TimeOffPoliciesSchemas4$Outbound | string | number | boolean | Array<any> | null | undefined;
    value?: string | null | undefined;
};
/** @internal */
export declare const TimeOffPoliciesType$outboundSchema: z.ZodType<TimeOffPoliciesType$Outbound, z.ZodTypeDef, TimeOffPoliciesType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TimeOffPoliciesType$ {
    /** @deprecated use `TimeOffPoliciesType$inboundSchema` instead. */
    const inboundSchema: z.ZodType<TimeOffPoliciesType, z.ZodTypeDef, unknown>;
    /** @deprecated use `TimeOffPoliciesType$outboundSchema` instead. */
    const outboundSchema: z.ZodType<TimeOffPoliciesType$Outbound, z.ZodTypeDef, TimeOffPoliciesType>;
    /** @deprecated use `TimeOffPoliciesType$Outbound` instead. */
    type Outbound = TimeOffPoliciesType$Outbound;
}
export declare function timeOffPoliciesTypeToJSON(timeOffPoliciesType: TimeOffPoliciesType): string;
export declare function timeOffPoliciesTypeFromJSON(jsonString: string): SafeParseResult<TimeOffPoliciesType, SDKValidationError>;
/** @internal */
export declare const TimeOffPolicies$inboundSchema: z.ZodType<TimeOffPolicies, z.ZodTypeDef, unknown>;
/** @internal */
export type TimeOffPolicies$Outbound = {
    created_at?: string | null | undefined;
    description?: string | null | undefined;
    duration_unit?: DurationUnit$Outbound | null | undefined;
    id?: string | null | undefined;
    name?: string | null | undefined;
    reasons?: Array<Reason$Outbound> | null | undefined;
    remote_id?: string | null | undefined;
    type?: TimeOffPoliciesType$Outbound | null | undefined;
    updated_at?: string | null | undefined;
};
/** @internal */
export declare const TimeOffPolicies$outboundSchema: z.ZodType<TimeOffPolicies$Outbound, z.ZodTypeDef, TimeOffPolicies>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace TimeOffPolicies$ {
    /** @deprecated use `TimeOffPolicies$inboundSchema` instead. */
    const inboundSchema: z.ZodType<TimeOffPolicies, z.ZodTypeDef, unknown>;
    /** @deprecated use `TimeOffPolicies$outboundSchema` instead. */
    const outboundSchema: z.ZodType<TimeOffPolicies$Outbound, z.ZodTypeDef, TimeOffPolicies>;
    /** @deprecated use `TimeOffPolicies$Outbound` instead. */
    type Outbound = TimeOffPolicies$Outbound;
}
export declare function timeOffPoliciesToJSON(timeOffPolicies: TimeOffPolicies): string;
export declare function timeOffPoliciesFromJSON(jsonString: string): SafeParseResult<TimeOffPolicies, SDKValidationError>;
//# sourceMappingURL=timeoffpolicies.d.ts.map