import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { RFCDate } from "../../types/rfcdate.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { Address, Address$Outbound } from "./address.js";
import { BankAccount2, BankAccount2$Outbound } from "./bankaccount2.js";
import { CustomField, CustomField$Outbound } from "./customfield.js";
import { Email, Email$Outbound } from "./email.js";
import { EmployeeCompensation, EmployeeCompensationInput, EmployeeCompensationInput$Outbound } from "./employeecompensation.js";
import { EmployeeJob, EmployeeJobInput, EmployeeJobInput$Outbound } from "./employeejob.js";
import { EmploymentStatus } from "./employmentstatus.js";
import { Gender } from "./gender.js";
import { PassThroughBody, PassThroughBody$Outbound } from "./passthroughbody.js";
import { Person } from "./person.js";
import { PersonInput, PersonInput$Outbound } from "./personinput.js";
import { PhoneNumber, PhoneNumber$Outbound } from "./phonenumber.js";
import { SocialLink, SocialLink$Outbound } from "./sociallink.js";
import { Team, Team$Outbound } from "./team.js";
/**
 * The reason because the employment ended.
 */
export declare const LeavingReason: {
    readonly Dismissed: "dismissed";
    readonly Resigned: "resigned";
    readonly Redundancy: "redundancy";
    readonly Other: "other";
};
/**
 * The reason because the employment ended.
 */
export type LeavingReason = ClosedEnum<typeof LeavingReason>;
/**
 * The type of employment relationship the employee has with the organization.
 */
export declare const EmploymentType: {
    readonly Contractor: "contractor";
    readonly Employee: "employee";
    readonly Freelance: "freelance";
    readonly Temp: "temp";
    readonly Internship: "internship";
    readonly Other: "other";
};
/**
 * The type of employment relationship the employee has with the organization.
 */
export type EmploymentType = ClosedEnum<typeof EmploymentType>;
/**
 * The work schedule of the employee.
 */
export declare const EmploymentSubType: {
    readonly FullTime: "full_time";
    readonly PartTime: "part_time";
    readonly Hourly: "hourly";
    readonly Other: "other";
    readonly NotSpecified: "not_specified";
};
/**
 * The work schedule of the employee.
 */
export type EmploymentSubType = ClosedEnum<typeof EmploymentSubType>;
export type EmploymentRole = {
    /**
     * The type of employment relationship the employee has with the organization.
     */
    type?: EmploymentType | null | undefined;
    /**
     * The work schedule of the employee.
     */
    subType?: EmploymentSubType | null | undefined;
};
export type Manager = {
    /**
     * A unique identifier for an object.
     */
    id?: string | null | undefined;
    /**
     * The name of the manager, often a combination of their first and last names.
     */
    name?: string | null | undefined;
    /**
     * The first name of the person.
     */
    firstName?: string | null | undefined;
    /**
     * The last name of the person.
     */
    lastName?: string | null | undefined;
    /**
     * The email address of the manager.
     */
    email?: string | null | undefined;
    /**
     * The employment status of the employee, indicating whether they are currently employed, inactive, terminated, or in another status.
     */
    employmentStatus?: EmploymentStatus | null | undefined;
};
export type ProbationPeriod = {
    /**
     * The date that the employee started their probation period at the company.
     */
    startDate?: RFCDate | null | undefined;
    /**
     * The date that the employee ended their probation period at the company.
     */
    endDate?: RFCDate | null | undefined;
};
export type Employee = {
    /**
     * A unique identifier for an object.
     */
    id?: string | null | undefined;
    /**
     * The third-party API ID of original entity
     */
    downstreamId?: string | null | undefined;
    /**
     * The first name of the person.
     */
    firstName?: string | null | undefined;
    /**
     * The last name of the person.
     */
    lastName?: string | null | undefined;
    /**
     * Middle name of the person.
     */
    middleName?: string | null | undefined;
    /**
     * The name used to display the employee, often a combination of their first and last names.
     */
    displayName?: string | null | undefined;
    /**
     * The name the employee prefers to be addressed by, which may be different from their legal name.
     */
    preferredName?: string | null | undefined;
    /**
     * The initials of the person, usually derived from their first, middle, and last names.
     */
    initials?: string | null | undefined;
    /**
     * A formal salutation for the person. For example, 'Mr', 'Mrs'
     */
    salutation?: string | null | undefined;
    /**
     * The job title of the person.
     */
    title?: string | null | undefined;
    /**
     * The marital status of the employee.
     */
    maritalStatus?: string | null | undefined;
    partner?: Person | undefined;
    /**
     * The division the person is currently in. Usually a collection of departments or teams or regions.
     */
    division?: string | null | undefined;
    /**
     * Unique identifier of the division this employee belongs to.
     */
    divisionId?: string | null | undefined;
    /**
     * The department the person is currently in. [Deprecated](https://developers.apideck.com/changelog) in favor of the dedicated department_id and department_name field.
     *
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    department?: string | null | undefined;
    /**
     * Unique identifier of the department ID this employee belongs to.
     */
    departmentId?: string | null | undefined;
    /**
     * Name of the department this employee belongs to.
     */
    departmentName?: string | null | undefined;
    /**
     * The team the person is currently in.
     */
    team?: Team | null | undefined;
    /**
     * The unique identifier of the company.
     */
    companyId?: string | null | undefined;
    /**
     * The name of the company.
     */
    companyName?: string | null | undefined;
    /**
     * A Start Date is the date that the employee started working at the company
     */
    employmentStartDate?: string | null | undefined;
    /**
     * An End Date is the date that the employee ended working at the company
     */
    employmentEndDate?: string | null | undefined;
    /**
     * The reason because the employment ended.
     */
    leavingReason?: LeavingReason | null | undefined;
    /**
     * An Employee Number, Employee ID or Employee Code, is a unique number that has been assigned to each individual staff member within a company.
     */
    employeeNumber?: string | null | undefined;
    /**
     * The employment status of the employee, indicating whether they are currently employed, inactive, terminated, or in another status.
     */
    employmentStatus?: EmploymentStatus | null | undefined;
    employmentRole?: EmploymentRole | undefined;
    /**
     * The ethnicity of the employee
     */
    ethnicity?: string | null | undefined;
    manager?: Manager | undefined;
    /**
     * Direct reports is an array of ids that reflect the individuals in an organizational hierarchy who are directly supervised by this specific employee.
     */
    directReports?: Array<string> | null | undefined;
    /**
     * A unique identifier assigned by the government. This field is considered sensitive information and may be subject to special security and privacy restrictions.
     */
    socialSecurityNumber?: string | null | undefined;
    /**
     * The date of birth of the person.
     */
    birthday?: RFCDate | null | undefined;
    /**
     * The date the person deceased.
     */
    deceasedOn?: RFCDate | null | undefined;
    /**
     * Country code according to ISO 3166-1 alpha-2.
     */
    countryOfBirth?: string | null | undefined;
    /**
     * A description of the object.
     */
    description?: string | null | undefined;
    /**
     * The gender represents the gender identity of a person.
     */
    gender?: Gender | null | undefined;
    /**
     * The preferred pronouns of the person.
     */
    pronouns?: string | null | undefined;
    /**
     * language code according to ISO 639-1. For the United States - EN
     */
    preferredLanguage?: string | null | undefined;
    languages?: Array<string | null> | undefined;
    nationalities?: Array<string | null> | undefined;
    /**
     * The URL of the photo of a person.
     */
    photoUrl?: string | null | undefined;
    /**
     * The time zone related to the resource. The value is a string containing a standard time zone identifier, e.g. Europe/London.
     */
    timezone?: string | null | undefined;
    /**
     * When the employee is imported as a new hire, this field indicates what system (e.g. the name of the ATS) this employee was imported from.
     */
    source?: string | null | undefined;
    /**
     * Unique identifier of the employee in the system this employee was imported from (e.g. the ID in the ATS).
     */
    sourceId?: string | null | undefined;
    recordUrl?: string | null | undefined;
    jobs?: Array<EmployeeJob> | null | undefined;
    compensations?: Array<EmployeeCompensation> | null | undefined;
    /**
     * Indicates if the employee works from a remote location.
     */
    worksRemote?: boolean | null | undefined;
    addresses?: Array<Address> | undefined;
    phoneNumbers?: Array<PhoneNumber> | undefined;
    emails?: Array<Email> | undefined;
    customFields?: Array<CustomField> | undefined;
    socialLinks?: Array<SocialLink> | undefined;
    bankAccounts?: Array<BankAccount2> | undefined;
    taxCode?: string | null | undefined;
    taxId?: string | null | undefined;
    /**
     * Indicate the employee's dietary preference.
     */
    dietaryPreference?: string | null | undefined;
    /**
     * Indicate the employee's food allergies.
     */
    foodAllergies?: Array<string> | null | undefined;
    probationPeriod?: ProbationPeriod | undefined;
    tags?: Array<string> | null | undefined;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     */
    customMappings?: {
        [k: string]: any;
    } | null | undefined;
    /**
     * A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.
     */
    rowVersion?: string | null | undefined;
    /**
     * Flag to indicate if the object is deleted.
     */
    deleted?: boolean | 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;
};
export type EmployeeInput = {
    /**
     * A unique identifier for an object.
     */
    id?: string | null | undefined;
    /**
     * The first name of the person.
     */
    firstName?: string | null | undefined;
    /**
     * The last name of the person.
     */
    lastName?: string | null | undefined;
    /**
     * Middle name of the person.
     */
    middleName?: string | null | undefined;
    /**
     * The name used to display the employee, often a combination of their first and last names.
     */
    displayName?: string | null | undefined;
    /**
     * The name the employee prefers to be addressed by, which may be different from their legal name.
     */
    preferredName?: string | null | undefined;
    /**
     * The initials of the person, usually derived from their first, middle, and last names.
     */
    initials?: string | null | undefined;
    /**
     * A formal salutation for the person. For example, 'Mr', 'Mrs'
     */
    salutation?: string | null | undefined;
    /**
     * The job title of the person.
     */
    title?: string | null | undefined;
    /**
     * The marital status of the employee.
     */
    maritalStatus?: string | null | undefined;
    partner?: PersonInput | undefined;
    /**
     * The division the person is currently in. Usually a collection of departments or teams or regions.
     */
    division?: string | null | undefined;
    /**
     * Unique identifier of the division this employee belongs to.
     */
    divisionId?: string | null | undefined;
    /**
     * The department the person is currently in. [Deprecated](https://developers.apideck.com/changelog) in favor of the dedicated department_id and department_name field.
     *
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    department?: string | null | undefined;
    /**
     * Unique identifier of the department ID this employee belongs to.
     */
    departmentId?: string | null | undefined;
    /**
     * Name of the department this employee belongs to.
     */
    departmentName?: string | null | undefined;
    /**
     * The team the person is currently in.
     */
    team?: Team | null | undefined;
    /**
     * The unique identifier of the company.
     */
    companyId?: string | null | undefined;
    /**
     * The name of the company.
     */
    companyName?: string | null | undefined;
    /**
     * A Start Date is the date that the employee started working at the company
     */
    employmentStartDate?: string | null | undefined;
    /**
     * An End Date is the date that the employee ended working at the company
     */
    employmentEndDate?: string | null | undefined;
    /**
     * The reason because the employment ended.
     */
    leavingReason?: LeavingReason | null | undefined;
    /**
     * An Employee Number, Employee ID or Employee Code, is a unique number that has been assigned to each individual staff member within a company.
     */
    employeeNumber?: string | null | undefined;
    /**
     * The employment status of the employee, indicating whether they are currently employed, inactive, terminated, or in another status.
     */
    employmentStatus?: EmploymentStatus | null | undefined;
    employmentRole?: EmploymentRole | undefined;
    /**
     * The ethnicity of the employee
     */
    ethnicity?: string | null | undefined;
    manager?: Manager | undefined;
    /**
     * Direct reports is an array of ids that reflect the individuals in an organizational hierarchy who are directly supervised by this specific employee.
     */
    directReports?: Array<string> | null | undefined;
    /**
     * A unique identifier assigned by the government. This field is considered sensitive information and may be subject to special security and privacy restrictions.
     */
    socialSecurityNumber?: string | null | undefined;
    /**
     * The date of birth of the person.
     */
    birthday?: RFCDate | null | undefined;
    /**
     * The date the person deceased.
     */
    deceasedOn?: RFCDate | null | undefined;
    /**
     * Country code according to ISO 3166-1 alpha-2.
     */
    countryOfBirth?: string | null | undefined;
    /**
     * A description of the object.
     */
    description?: string | null | undefined;
    /**
     * The gender represents the gender identity of a person.
     */
    gender?: Gender | null | undefined;
    /**
     * The preferred pronouns of the person.
     */
    pronouns?: string | null | undefined;
    /**
     * language code according to ISO 639-1. For the United States - EN
     */
    preferredLanguage?: string | null | undefined;
    languages?: Array<string | null> | undefined;
    nationalities?: Array<string | null> | undefined;
    /**
     * The URL of the photo of a person.
     */
    photoUrl?: string | null | undefined;
    /**
     * The time zone related to the resource. The value is a string containing a standard time zone identifier, e.g. Europe/London.
     */
    timezone?: string | null | undefined;
    /**
     * When the employee is imported as a new hire, this field indicates what system (e.g. the name of the ATS) this employee was imported from.
     */
    source?: string | null | undefined;
    /**
     * Unique identifier of the employee in the system this employee was imported from (e.g. the ID in the ATS).
     */
    sourceId?: string | null | undefined;
    recordUrl?: string | null | undefined;
    jobs?: Array<EmployeeJobInput> | null | undefined;
    compensations?: Array<EmployeeCompensationInput> | null | undefined;
    /**
     * Indicates if the employee works from a remote location.
     */
    worksRemote?: boolean | null | undefined;
    addresses?: Array<Address> | undefined;
    phoneNumbers?: Array<PhoneNumber> | undefined;
    emails?: Array<Email> | undefined;
    customFields?: Array<CustomField> | undefined;
    socialLinks?: Array<SocialLink> | undefined;
    bankAccounts?: Array<BankAccount2> | undefined;
    taxCode?: string | null | undefined;
    taxId?: string | null | undefined;
    /**
     * Indicate the employee's dietary preference.
     */
    dietaryPreference?: string | null | undefined;
    /**
     * Indicate the employee's food allergies.
     */
    foodAllergies?: Array<string> | null | undefined;
    probationPeriod?: ProbationPeriod | undefined;
    tags?: Array<string> | null | undefined;
    /**
     * A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.
     */
    rowVersion?: string | null | undefined;
    /**
     * Flag to indicate if the object is deleted.
     */
    deleted?: boolean | 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;
};
/** @internal */
export declare const LeavingReason$inboundSchema: z.ZodNativeEnum<typeof LeavingReason>;
/** @internal */
export declare const LeavingReason$outboundSchema: z.ZodNativeEnum<typeof LeavingReason>;
/** @internal */
export declare const EmploymentType$inboundSchema: z.ZodNativeEnum<typeof EmploymentType>;
/** @internal */
export declare const EmploymentType$outboundSchema: z.ZodNativeEnum<typeof EmploymentType>;
/** @internal */
export declare const EmploymentSubType$inboundSchema: z.ZodNativeEnum<typeof EmploymentSubType>;
/** @internal */
export declare const EmploymentSubType$outboundSchema: z.ZodNativeEnum<typeof EmploymentSubType>;
/** @internal */
export declare const EmploymentRole$inboundSchema: z.ZodType<EmploymentRole, z.ZodTypeDef, unknown>;
/** @internal */
export type EmploymentRole$Outbound = {
    type?: string | null | undefined;
    sub_type?: string | null | undefined;
};
/** @internal */
export declare const EmploymentRole$outboundSchema: z.ZodType<EmploymentRole$Outbound, z.ZodTypeDef, EmploymentRole>;
export declare function employmentRoleToJSON(employmentRole: EmploymentRole): string;
export declare function employmentRoleFromJSON(jsonString: string): SafeParseResult<EmploymentRole, SDKValidationError>;
/** @internal */
export declare const Manager$inboundSchema: z.ZodType<Manager, z.ZodTypeDef, unknown>;
/** @internal */
export type Manager$Outbound = {
    id?: string | null | undefined;
    name?: string | null | undefined;
    first_name?: string | null | undefined;
    last_name?: string | null | undefined;
    email?: string | null | undefined;
    employment_status?: string | null | undefined;
};
/** @internal */
export declare const Manager$outboundSchema: z.ZodType<Manager$Outbound, z.ZodTypeDef, Manager>;
export declare function managerToJSON(manager: Manager): string;
export declare function managerFromJSON(jsonString: string): SafeParseResult<Manager, SDKValidationError>;
/** @internal */
export declare const ProbationPeriod$inboundSchema: z.ZodType<ProbationPeriod, z.ZodTypeDef, unknown>;
/** @internal */
export type ProbationPeriod$Outbound = {
    start_date?: string | null | undefined;
    end_date?: string | null | undefined;
};
/** @internal */
export declare const ProbationPeriod$outboundSchema: z.ZodType<ProbationPeriod$Outbound, z.ZodTypeDef, ProbationPeriod>;
export declare function probationPeriodToJSON(probationPeriod: ProbationPeriod): string;
export declare function probationPeriodFromJSON(jsonString: string): SafeParseResult<ProbationPeriod, SDKValidationError>;
/** @internal */
export declare const Employee$inboundSchema: z.ZodType<Employee, z.ZodTypeDef, unknown>;
export declare function employeeFromJSON(jsonString: string): SafeParseResult<Employee, SDKValidationError>;
/** @internal */
export type EmployeeInput$Outbound = {
    id?: string | null | undefined;
    first_name?: string | null | undefined;
    last_name?: string | null | undefined;
    middle_name?: string | null | undefined;
    display_name?: string | null | undefined;
    preferred_name?: string | null | undefined;
    initials?: string | null | undefined;
    salutation?: string | null | undefined;
    title?: string | null | undefined;
    marital_status?: string | null | undefined;
    partner?: PersonInput$Outbound | undefined;
    division?: string | null | undefined;
    division_id?: string | null | undefined;
    department?: string | null | undefined;
    department_id?: string | null | undefined;
    department_name?: string | null | undefined;
    team?: Team$Outbound | null | undefined;
    company_id?: string | null | undefined;
    company_name?: string | null | undefined;
    employment_start_date?: string | null | undefined;
    employment_end_date?: string | null | undefined;
    leaving_reason?: string | null | undefined;
    employee_number?: string | null | undefined;
    employment_status?: string | null | undefined;
    employment_role?: EmploymentRole$Outbound | undefined;
    ethnicity?: string | null | undefined;
    manager?: Manager$Outbound | undefined;
    direct_reports?: Array<string> | null | undefined;
    social_security_number?: string | null | undefined;
    birthday?: string | null | undefined;
    deceased_on?: string | null | undefined;
    country_of_birth?: string | null | undefined;
    description?: string | null | undefined;
    gender?: string | null | undefined;
    pronouns?: string | null | undefined;
    preferred_language?: string | null | undefined;
    languages?: Array<string | null> | undefined;
    nationalities?: Array<string | null> | undefined;
    photo_url?: string | null | undefined;
    timezone?: string | null | undefined;
    source?: string | null | undefined;
    source_id?: string | null | undefined;
    record_url?: string | null | undefined;
    jobs?: Array<EmployeeJobInput$Outbound> | null | undefined;
    compensations?: Array<EmployeeCompensationInput$Outbound> | null | undefined;
    works_remote?: boolean | null | undefined;
    addresses?: Array<Address$Outbound> | undefined;
    phone_numbers?: Array<PhoneNumber$Outbound> | undefined;
    emails?: Array<Email$Outbound> | undefined;
    custom_fields?: Array<CustomField$Outbound> | undefined;
    social_links?: Array<SocialLink$Outbound> | undefined;
    bank_accounts?: Array<BankAccount2$Outbound> | undefined;
    tax_code?: string | null | undefined;
    tax_id?: string | null | undefined;
    dietary_preference?: string | null | undefined;
    food_allergies?: Array<string> | null | undefined;
    probation_period?: ProbationPeriod$Outbound | undefined;
    tags?: Array<string> | null | undefined;
    row_version?: string | null | undefined;
    deleted?: boolean | null | undefined;
    pass_through?: Array<PassThroughBody$Outbound> | undefined;
};
/** @internal */
export declare const EmployeeInput$outboundSchema: z.ZodType<EmployeeInput$Outbound, z.ZodTypeDef, EmployeeInput>;
export declare function employeeInputToJSON(employeeInput: EmployeeInput): string;
//# sourceMappingURL=employee.d.ts.map