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 FieldMappingClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class FieldMappingClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<FieldMappingClient.Options>;
    constructor(options: FieldMappingClient.Options);
    /**
     * Get all Field Mappings for this Linked Account. Field Mappings are mappings between third-party Remote Fields and user defined Merge fields. [Learn more](https://docs.merge.dev/supplemental-data/field-mappings/overview/).
     *
     * @param {Merge.hris.FieldMappingsRetrieveRequest} request
     * @param {FieldMappingClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.fieldMapping.fieldMappingsRetrieve({
     *         excludeRemoteFieldMetadata: true
     *     })
     */
    fieldMappingsRetrieve(request?: Merge.hris.FieldMappingsRetrieveRequest, requestOptions?: FieldMappingClient.RequestOptions): core.HttpResponsePromise<Merge.hris.FieldMappingApiInstanceResponse>;
    private __fieldMappingsRetrieve;
    /**
     * Create new Field Mappings that will be available after the next scheduled sync. This will cause the next sync for this Linked Account to sync **ALL** data from start.
     *
     * @param {Merge.hris.CreateFieldMappingRequest} request
     * @param {FieldMappingClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.fieldMapping.fieldMappingsCreate({
     *         excludeRemoteFieldMetadata: true,
     *         targetFieldName: "example_target_field_name",
     *         targetFieldDescription: "this is a example description of the target field",
     *         remoteFieldTraversalPath: ["example_remote_field"],
     *         remoteMethod: "GET",
     *         remoteUrlPath: "/example-url-path",
     *         commonModelName: "ExampleCommonModel"
     *     })
     */
    fieldMappingsCreate(request: Merge.hris.CreateFieldMappingRequest, requestOptions?: FieldMappingClient.RequestOptions): core.HttpResponsePromise<Merge.hris.FieldMappingInstanceResponse>;
    private __fieldMappingsCreate;
    /**
     * Deletes Field Mappings for a Linked Account. All data related to this Field Mapping will be deleted and these changes will be reflected after the next scheduled sync. This will cause the next sync for this Linked Account to sync **ALL** data from start.
     *
     * @param {string} field_mapping_id
     * @param {FieldMappingClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.fieldMapping.fieldMappingsDestroy("field_mapping_id")
     */
    fieldMappingsDestroy(field_mapping_id: string, requestOptions?: FieldMappingClient.RequestOptions): core.HttpResponsePromise<Merge.hris.FieldMappingInstanceResponse>;
    private __fieldMappingsDestroy;
    /**
     * Create or update existing Field Mappings for a Linked Account. Changes will be reflected after the next scheduled sync. This will cause the next sync for this Linked Account to sync **ALL** data from start.
     *
     * @param {string} field_mapping_id
     * @param {Merge.hris.PatchedEditFieldMappingRequest} request
     * @param {FieldMappingClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.fieldMapping.fieldMappingsPartialUpdate("field_mapping_id", {
     *         remoteDataIterationCount: 1
     *     })
     */
    fieldMappingsPartialUpdate(field_mapping_id: string, request?: Merge.hris.PatchedEditFieldMappingRequest, requestOptions?: FieldMappingClient.RequestOptions): core.HttpResponsePromise<Merge.hris.FieldMappingInstanceResponse>;
    private __fieldMappingsPartialUpdate;
    /**
     * Get all remote fields for a Linked Account. Remote fields are third-party fields that are accessible after initial sync if remote_data is enabled. You can use remote fields to override existing Merge fields or map a new Merge field. [Learn more](https://docs.merge.dev/supplemental-data/field-mappings/overview/).
     *
     * @param {Merge.hris.RemoteFieldsRetrieveRequest} request
     * @param {FieldMappingClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.fieldMapping.remoteFieldsRetrieve({
     *         commonModels: "common_models",
     *         includeExampleValues: "include_example_values"
     *     })
     */
    remoteFieldsRetrieve(request?: Merge.hris.RemoteFieldsRetrieveRequest, requestOptions?: FieldMappingClient.RequestOptions): core.HttpResponsePromise<Merge.hris.RemoteFieldApiResponse>;
    private __remoteFieldsRetrieve;
    /**
     * Get all organization-wide Target Fields, this will not include any Linked Account specific Target Fields. Organization-wide Target Fields are additional fields appended to the Merge Common Model for all Linked Accounts in a category. [Learn more](https://docs.merge.dev/supplemental-data/field-mappings/target-fields/).
     *
     * @param {FieldMappingClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.hris.fieldMapping.targetFieldsRetrieve()
     */
    targetFieldsRetrieve(requestOptions?: FieldMappingClient.RequestOptions): core.HttpResponsePromise<Merge.hris.ExternalTargetFieldApiResponse>;
    private __targetFieldsRetrieve;
}
