/**
 * This file was auto-generated by Fern from our API Definition.
 */
import * as environments from "../../../../../../environments";
import * as core from "../../../../../../core";
import * as Merge from "../../../../../index";
export declare namespace FieldMapping {
    interface Options {
        environment?: core.Supplier<environments.MergeEnvironment | string>;
        apiKey: core.Supplier<core.BearerToken>;
        /** Override the X-Account-Token header */
        accountToken?: core.Supplier<string | undefined>;
        fetcher?: core.FetchFunction;
    }
    interface RequestOptions {
        /** The maximum time to wait for a response in seconds. */
        timeoutInSeconds?: number;
        /** The number of times to retry the request. Defaults to 2. */
        maxRetries?: number;
        /** A hook to abort the request. */
        abortSignal?: AbortSignal;
        /** Override the X-Account-Token header */
        accountToken?: string | undefined;
        /** Additional headers to include in the request. */
        headers?: Record<string, string>;
    }
}
export declare class FieldMapping {
    protected readonly _options: FieldMapping.Options;
    constructor(_options: FieldMapping.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.ats.FieldMappingsRetrieveRequest} request
     * @param {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.fieldMapping.fieldMappingsRetrieve()
     */
    fieldMappingsRetrieve(request?: Merge.ats.FieldMappingsRetrieveRequest, requestOptions?: FieldMapping.RequestOptions): Promise<Merge.ats.FieldMappingApiInstanceResponse>;
    /**
     * 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.ats.CreateFieldMappingRequest} request
     * @param {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.fieldMapping.fieldMappingsCreate({
     *         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.ats.CreateFieldMappingRequest, requestOptions?: FieldMapping.RequestOptions): Promise<Merge.ats.FieldMappingInstanceResponse>;
    /**
     * 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} fieldMappingId
     * @param {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.fieldMapping.fieldMappingsDestroy("field_mapping_id")
     */
    fieldMappingsDestroy(fieldMappingId: string, requestOptions?: FieldMapping.RequestOptions): Promise<Merge.ats.FieldMappingInstanceResponse>;
    /**
     * 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} fieldMappingId
     * @param {Merge.ats.PatchedEditFieldMappingRequest} request
     * @param {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.fieldMapping.fieldMappingsPartialUpdate("field_mapping_id")
     */
    fieldMappingsPartialUpdate(fieldMappingId: string, request?: Merge.ats.PatchedEditFieldMappingRequest, requestOptions?: FieldMapping.RequestOptions): Promise<Merge.ats.FieldMappingInstanceResponse>;
    /**
     * 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.ats.RemoteFieldsRetrieveRequest} request
     * @param {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.fieldMapping.remoteFieldsRetrieve()
     */
    remoteFieldsRetrieve(request?: Merge.ats.RemoteFieldsRetrieveRequest, requestOptions?: FieldMapping.RequestOptions): Promise<Merge.ats.RemoteFieldApiResponse>;
    /**
     * 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 {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.fieldMapping.targetFieldsRetrieve()
     */
    targetFieldsRetrieve(requestOptions?: FieldMapping.RequestOptions): Promise<Merge.ats.ExternalTargetFieldApiResponse>;
    protected _getAuthorizationHeader(): Promise<string>;
}
