/**
 * 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>;
        /** Specify a custom URL to connect the client to. */
        baseUrl?: core.Supplier<string>;
        apiKey: core.Supplier<core.BearerToken>;
        /** Override the X-Account-Token header */
        accountToken?: core.Supplier<string | undefined>;
        /** Additional headers to include in requests. */
        headers?: Record<string, string | core.Supplier<string | undefined> | 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 query string parameters to include in the request. */
        queryParams?: Record<string, unknown>;
        /** Additional headers to include in the request. */
        headers?: Record<string, string | core.Supplier<string | undefined> | undefined>;
    }
}
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.filestorage.FieldMappingsRetrieveRequest} request
     * @param {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.filestorage.fieldMapping.fieldMappingsRetrieve()
     */
    fieldMappingsRetrieve(request?: Merge.filestorage.FieldMappingsRetrieveRequest, requestOptions?: FieldMapping.RequestOptions): core.HttpResponsePromise<Merge.filestorage.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.filestorage.CreateFieldMappingRequest} request
     * @param {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.filestorage.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.filestorage.CreateFieldMappingRequest, requestOptions?: FieldMapping.RequestOptions): core.HttpResponsePromise<Merge.filestorage.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} fieldMappingId
     * @param {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.filestorage.fieldMapping.fieldMappingsDestroy("field_mapping_id")
     */
    fieldMappingsDestroy(fieldMappingId: string, requestOptions?: FieldMapping.RequestOptions): core.HttpResponsePromise<Merge.filestorage.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} fieldMappingId
     * @param {Merge.filestorage.PatchedEditFieldMappingRequest} request
     * @param {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.filestorage.fieldMapping.fieldMappingsPartialUpdate("field_mapping_id")
     */
    fieldMappingsPartialUpdate(fieldMappingId: string, request?: Merge.filestorage.PatchedEditFieldMappingRequest, requestOptions?: FieldMapping.RequestOptions): core.HttpResponsePromise<Merge.filestorage.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.filestorage.RemoteFieldsRetrieveRequest} request
     * @param {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.filestorage.fieldMapping.remoteFieldsRetrieve()
     */
    remoteFieldsRetrieve(request?: Merge.filestorage.RemoteFieldsRetrieveRequest, requestOptions?: FieldMapping.RequestOptions): core.HttpResponsePromise<Merge.filestorage.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 {FieldMapping.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.filestorage.fieldMapping.targetFieldsRetrieve()
     */
    targetFieldsRetrieve(requestOptions?: FieldMapping.RequestOptions): core.HttpResponsePromise<Merge.filestorage.ExternalTargetFieldApiResponse>;
    private __targetFieldsRetrieve;
    protected _getAuthorizationHeader(): Promise<string>;
}
