import type { BaseClientOptions, BaseRequestOptions } from "../../../../../../BaseClient";
import { type NormalizedClientOptionsWithAuth } from "../../../../../../BaseClient";
import * as core from "../../../../../../core";
import type * as Merge from "../../../../../index";
export declare namespace EmployeesClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class EmployeesClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<EmployeesClient.Options>;
    constructor(options: EmployeesClient.Options);
    /**
     * Returns a list of `Employee` objects.
     *
     * @param {Merge.hris.EmployeesListRequest} request
     * @param {EmployeesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.employees.list({
     *         companyId: "company_id",
     *         createdAfter: new Date("2024-01-15T09:30:00.000Z"),
     *         createdBefore: new Date("2024-01-15T09:30:00.000Z"),
     *         cursor: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
     *         displayFullName: "display_full_name",
     *         employeeNumber: "employee_number",
     *         employmentStatus: "ACTIVE",
     *         employmentType: "employment_type",
     *         firstName: "first_name",
     *         groups: "groups",
     *         homeLocationId: "home_location_id",
     *         includeDeletedData: true,
     *         includeRemoteData: true,
     *         includeSensitiveFields: true,
     *         includeShellData: true,
     *         jobTitle: "job_title",
     *         lastName: "last_name",
     *         managerId: "manager_id",
     *         modifiedAfter: new Date("2024-01-15T09:30:00.000Z"),
     *         modifiedBefore: new Date("2024-01-15T09:30:00.000Z"),
     *         pageSize: 1,
     *         payGroupId: "pay_group_id",
     *         personalEmail: "personal_email",
     *         remoteFields: "employment_status",
     *         remoteId: "remote_id",
     *         showEnumOrigins: "employment_status",
     *         startedAfter: new Date("2024-01-15T09:30:00.000Z"),
     *         startedBefore: new Date("2024-01-15T09:30:00.000Z"),
     *         teamId: "team_id",
     *         terminatedAfter: new Date("2024-01-15T09:30:00.000Z"),
     *         terminatedBefore: new Date("2024-01-15T09:30:00.000Z"),
     *         workEmail: "work_email",
     *         workLocationId: "work_location_id"
     *     })
     */
    list(request?: Merge.hris.EmployeesListRequest, requestOptions?: EmployeesClient.RequestOptions): Promise<core.Page<Merge.hris.Employee, Merge.hris.PaginatedEmployeeList>>;
    /**
     * Creates an `Employee` object with the given values.
     *
     * @param {Merge.hris.EmployeeEndpointRequest} request
     * @param {EmployeesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.employees.create({
     *         isDebugMode: true,
     *         runAsync: true,
     *         model: {}
     *     })
     */
    create(request: Merge.hris.EmployeeEndpointRequest, requestOptions?: EmployeesClient.RequestOptions): core.HttpResponsePromise<Merge.hris.EmployeeResponse>;
    private __create;
    /**
     * Returns an `Employee` object with the given `id`.
     *
     * @param {string} id
     * @param {Merge.hris.EmployeesRetrieveRequest} request
     * @param {EmployeesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.employees.retrieve("id", {
     *         includeRemoteData: true,
     *         includeSensitiveFields: true,
     *         includeShellData: true,
     *         remoteFields: "employment_status",
     *         showEnumOrigins: "employment_status"
     *     })
     */
    retrieve(id: string, request?: Merge.hris.EmployeesRetrieveRequest, requestOptions?: EmployeesClient.RequestOptions): core.HttpResponsePromise<Merge.hris.Employee>;
    private __retrieve;
    /**
     * Ignores a specific row based on the `model_id` in the url. These records will have their properties set to null, and will not be updated in future syncs. The "reason" and "message" fields in the request body will be stored for audit purposes.
     *
     * @param {string} model_id
     * @param {Merge.hris.IgnoreCommonModelRequest} request
     * @param {EmployeesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.employees.ignoreCreate("model_id", {
     *         reason: "GENERAL_CUSTOMER_REQUEST"
     *     })
     */
    ignoreCreate(model_id: string, request: Merge.hris.IgnoreCommonModelRequest, requestOptions?: EmployeesClient.RequestOptions): core.HttpResponsePromise<void>;
    private __ignoreCreate;
    /**
     * Returns metadata for `Employee` POSTs.
     *
     * @param {EmployeesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.employees.metaPostRetrieve()
     */
    metaPostRetrieve(requestOptions?: EmployeesClient.RequestOptions): core.HttpResponsePromise<Merge.hris.MetaResponse>;
    private __metaPostRetrieve;
}
