/**
 * Apideck
 * The Apideck OpenAPI Spec: SDK Optimized
 *
 * The version of the OpenAPI document: 10.13.0
 * Contact: support@apideck.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { Address } from './Address';
import { BankAccount } from './BankAccount';
import { CustomField } from './CustomField';
import { Email } from './Email';
import { EmployeeCompensation } from './EmployeeCompensation';
import { EmployeeEmploymentRole } from './EmployeeEmploymentRole';
import { EmployeeJob } from './EmployeeJob';
import { EmployeeManager } from './EmployeeManager';
import { EmploymentStatus } from './EmploymentStatus';
import { Gender } from './Gender';
import { PassThroughBody } from './PassThroughBody';
import { Person } from './Person';
import { PhoneNumber } from './PhoneNumber';
import { ProbationPeriod } from './ProbationPeriod';
import { SocialLink } from './SocialLink';
import { Tags } from './Tags';
import { Team } from './Team';
/**
 *
 * @export
 * @interface Employee
 */
export interface Employee {
    /**
     * A unique identifier for an object.
     * @type {string}
     * @memberof Employee
     */
    id?: string | null;
    /**
     * The first name of the person.
     * @type {string}
     * @memberof Employee
     */
    first_name?: string | null;
    /**
     * The last name of the person.
     * @type {string}
     * @memberof Employee
     */
    last_name?: string | null;
    /**
     * Middle name of the person.
     * @type {string}
     * @memberof Employee
     */
    middle_name?: string | null;
    /**
     * The name used to display the employee, often a combination of their first and last names.
     * @type {string}
     * @memberof Employee
     */
    display_name?: string | null;
    /**
     * The name the employee prefers to be addressed by, which may be different from their legal name.
     * @type {string}
     * @memberof Employee
     */
    preferred_name?: string | null;
    /**
     * The initials of the person, usually derived from their first, middle, and last names.
     * @type {string}
     * @memberof Employee
     */
    initials?: string | null;
    /**
     * A formal salutation for the person. For example, 'Mr', 'Mrs'
     * @type {string}
     * @memberof Employee
     */
    salutation?: string | null;
    /**
     * The job title of the person.
     * @type {string}
     * @memberof Employee
     */
    title?: string | null;
    /**
     * The marital status of the employee.
     * @type {string}
     * @memberof Employee
     */
    marital_status?: string | null;
    /**
     *
     * @type {Person}
     * @memberof Employee
     */
    partner?: Person;
    /**
     * The division the person is currently in. Usually a collection of departments or teams or regions.
     * @type {string}
     * @memberof Employee
     */
    division?: string | null;
    /**
     * Unique identifier of the division this employee belongs to.
     * @type {string}
     * @memberof Employee
     */
    division_id?: string | null;
    /**
     * The department the person is currently in. [Deprecated](https://developers.apideck.com/changelog) in favor of the dedicated department_id and department_name field.
     * @type {string}
     * @memberof Employee
     */
    department?: string | null;
    /**
     * Unique identifier of the department ID this employee belongs to.
     * @type {string}
     * @memberof Employee
     */
    department_id?: string | null;
    /**
     * Name of the department this employee belongs to.
     * @type {string}
     * @memberof Employee
     */
    department_name?: string | null;
    /**
     *
     * @type {Team}
     * @memberof Employee
     */
    team?: Team | null;
    /**
     * The unique identifier of the company.
     * @type {string}
     * @memberof Employee
     */
    company_id?: string | null;
    /**
     * The name of the company.
     * @type {string}
     * @memberof Employee
     */
    company_name?: string | null;
    /**
     * A Start Date is the date that the employee started working at the company
     * @type {string}
     * @memberof Employee
     */
    employment_start_date?: string | null;
    /**
     * An End Date is the date that the employee ended working at the company
     * @type {string}
     * @memberof Employee
     */
    employment_end_date?: string | null;
    /**
     * The reason because the employment ended.
     * @type {string}
     * @memberof Employee
     */
    leaving_reason?: EmployeeLeavingReason;
    /**
     * An Employee Number, Employee ID or Employee Code, is a unique number that has been assigned to each individual staff member within a company.
     * @type {string}
     * @memberof Employee
     */
    employee_number?: string | null;
    /**
     *
     * @type {EmploymentStatus}
     * @memberof Employee
     */
    employment_status?: EmploymentStatus | null;
    /**
     *
     * @type {EmployeeEmploymentRole}
     * @memberof Employee
     */
    employment_role?: EmployeeEmploymentRole;
    /**
     * The ethnicity of the employee
     * @type {string}
     * @memberof Employee
     */
    ethnicity?: string | null;
    /**
     *
     * @type {EmployeeManager}
     * @memberof Employee
     */
    manager?: EmployeeManager;
    /**
     * Direct reports is an array of ids that reflect the individuals in an organizational hierarchy who are directly supervised by this specific employee.
     * @type {Array<string>}
     * @memberof Employee
     */
    direct_reports?: Array<string> | null;
    /**
     * A unique identifier assigned by the government. This field is considered sensitive information and may be subject to special security and privacy restrictions.
     * @type {string}
     * @memberof Employee
     */
    social_security_number?: string | null;
    /**
     * The date of birth of the person.
     * @type {Date}
     * @memberof Employee
     */
    birthday?: Date | null;
    /**
     * The date the person deceased.
     * @type {Date}
     * @memberof Employee
     */
    deceased_on?: Date | null;
    /**
     * Country code according to ISO 3166-1 alpha-2.
     * @type {string}
     * @memberof Employee
     */
    country_of_birth?: string | null;
    /**
     * A description of the object.
     * @type {string}
     * @memberof Employee
     */
    description?: string | null;
    /**
     *
     * @type {Gender}
     * @memberof Employee
     */
    gender?: Gender | null;
    /**
     * The preferred pronouns of the person.
     * @type {string}
     * @memberof Employee
     */
    pronouns?: string | null;
    /**
     * language code according to ISO 639-1. For the United States - EN
     * @type {string}
     * @memberof Employee
     */
    preferred_language?: string | null;
    /**
     *
     * @type {Array<string>}
     * @memberof Employee
     */
    languages?: Array<string>;
    /**
     *
     * @type {Array<string>}
     * @memberof Employee
     */
    nationalities?: Array<string>;
    /**
     * The URL of the photo of a person.
     * @type {string}
     * @memberof Employee
     */
    photo_url?: string | null;
    /**
     * The time zone related to the resource. The value is a string containing a standard time zone identifier, e.g. Europe/London.
     * @type {string}
     * @memberof Employee
     */
    timezone?: string | null;
    /**
     * 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.
     * @type {string}
     * @memberof Employee
     */
    source?: string | null;
    /**
     * Unique identifier of the employee in the system this employee was imported from (e.g. the ID in the ATS).
     * @type {string}
     * @memberof Employee
     */
    source_id?: string | null;
    /**
     *
     * @type {string}
     * @memberof Employee
     */
    record_url?: string | null;
    /**
     *
     * @type {Array<EmployeeJob>}
     * @memberof Employee
     */
    jobs?: Array<EmployeeJob> | null;
    /**
     *
     * @type {Array<EmployeeCompensation>}
     * @memberof Employee
     */
    compensations?: Array<EmployeeCompensation> | null;
    /**
     * Indicates if the employee works from a remote location.
     * @type {boolean}
     * @memberof Employee
     */
    works_remote?: boolean | null;
    /**
     *
     * @type {Array<Address>}
     * @memberof Employee
     */
    addresses?: Array<Address>;
    /**
     *
     * @type {Array<PhoneNumber>}
     * @memberof Employee
     */
    phone_numbers?: Array<PhoneNumber>;
    /**
     *
     * @type {Array<Email>}
     * @memberof Employee
     */
    emails?: Array<Email>;
    /**
     *
     * @type {Array<CustomField>}
     * @memberof Employee
     */
    custom_fields?: Array<CustomField>;
    /**
     *
     * @type {Array<SocialLink>}
     * @memberof Employee
     */
    social_links?: Array<SocialLink>;
    /**
     *
     * @type {Array<BankAccount>}
     * @memberof Employee
     */
    bank_accounts?: Array<BankAccount>;
    /**
     *
     * @type {string}
     * @memberof Employee
     */
    tax_code?: string | null;
    /**
     *
     * @type {string}
     * @memberof Employee
     */
    tax_id?: string | null;
    /**
     * Indicate the employee's dietary preference.
     * @type {string}
     * @memberof Employee
     */
    dietary_preference?: string | null;
    /**
     * Indicate the employee's food allergies.
     * @type {Array<string>}
     * @memberof Employee
     */
    food_allergies?: Array<string> | null;
    /**
     *
     * @type {ProbationPeriod}
     * @memberof Employee
     */
    probation_period?: ProbationPeriod;
    /**
     *
     * @type {Tags}
     * @memberof Employee
     */
    tags?: Tags | null;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     * @type {object}
     * @memberof Employee
     */
    readonly custom_mappings?: object | null;
    /**
     * 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.
     * @type {string}
     * @memberof Employee
     */
    row_version?: string | null;
    /**
     * Flag to indicate if the object is deleted.
     * @type {boolean}
     * @memberof Employee
     */
    deleted?: boolean | null;
    /**
     * The user who last updated the object.
     * @type {string}
     * @memberof Employee
     */
    readonly updated_by?: string | null;
    /**
     * The user who created the object.
     * @type {string}
     * @memberof Employee
     */
    readonly created_by?: string | null;
    /**
     * The date and time when the object was last updated.
     * @type {Date}
     * @memberof Employee
     */
    readonly updated_at?: Date | null;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof Employee
     */
    readonly created_at?: Date | null;
    /**
     *
     * @type {PassThroughBody}
     * @memberof Employee
     */
    pass_through?: PassThroughBody;
}
/**
 * @export
 * @enum {string}
 */
export declare enum EmployeeLeavingReason {
    dismissed = "dismissed",
    resigned = "resigned",
    redundancy = "redundancy",
    other = "other"
}
export declare function EmployeeFromJSON(json: any): Employee;
export declare function EmployeeFromJSONTyped(json: any, ignoreDiscriminator: boolean): Employee;
export declare function EmployeeToJSON(value?: Employee | null): any;
