/**
 * 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 Candidates {
    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 Candidates {
    protected readonly _options: Candidates.Options;
    constructor(_options: Candidates.Options);
    /**
     * Returns a list of `Candidate` objects.
     *
     * @param {Merge.ats.CandidatesListRequest} request
     * @param {Candidates.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.candidates.list()
     */
    list(request?: Merge.ats.CandidatesListRequest, requestOptions?: Candidates.RequestOptions): core.HttpResponsePromise<Merge.ats.PaginatedCandidateList>;
    private __list;
    /**
     * Creates a `Candidate` object with the given values.
     *
     * @param {Merge.ats.CandidateEndpointRequest} request
     * @param {Candidates.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.candidates.create({
     *         model: {},
     *         remoteUserId: "remote_user_id"
     *     })
     */
    create(request: Merge.ats.CandidateEndpointRequest, requestOptions?: Candidates.RequestOptions): core.HttpResponsePromise<Merge.ats.CandidateResponse>;
    private __create;
    /**
     * Returns a `Candidate` object with the given `id`.
     *
     * @param {string} id
     * @param {Merge.ats.CandidatesRetrieveRequest} request
     * @param {Candidates.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.candidates.retrieve("id")
     */
    retrieve(id: string, request?: Merge.ats.CandidatesRetrieveRequest, requestOptions?: Candidates.RequestOptions): core.HttpResponsePromise<Merge.ats.Candidate>;
    private __retrieve;
    /**
     * Updates a `Candidate` object with the given `id`.
     *
     * @param {string} id
     * @param {Merge.ats.PatchedCandidateEndpointRequest} request
     * @param {Candidates.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.candidates.partialUpdate("id", {
     *         model: {},
     *         remoteUserId: "remote_user_id"
     *     })
     */
    partialUpdate(id: string, request: Merge.ats.PatchedCandidateEndpointRequest, requestOptions?: Candidates.RequestOptions): core.HttpResponsePromise<Merge.ats.CandidateResponse>;
    private __partialUpdate;
    /**
     * 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} modelId
     * @param {Merge.ats.IgnoreCommonModelRequest} request
     * @param {Candidates.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.candidates.ignoreCreate("model_id", {
     *         reason: "GENERAL_CUSTOMER_REQUEST"
     *     })
     */
    ignoreCreate(modelId: string, request: Merge.ats.IgnoreCommonModelRequest, requestOptions?: Candidates.RequestOptions): core.HttpResponsePromise<void>;
    private __ignoreCreate;
    /**
     * Returns metadata for `Candidate` PATCHs.
     *
     * @param {string} id
     * @param {Candidates.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.candidates.metaPatchRetrieve("id")
     */
    metaPatchRetrieve(id: string, requestOptions?: Candidates.RequestOptions): core.HttpResponsePromise<Merge.ats.MetaResponse>;
    private __metaPatchRetrieve;
    /**
     * Returns metadata for `Candidate` POSTs.
     *
     * @param {Candidates.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.ats.candidates.metaPostRetrieve()
     */
    metaPostRetrieve(requestOptions?: Candidates.RequestOptions): core.HttpResponsePromise<Merge.ats.MetaResponse>;
    private __metaPostRetrieve;
    protected _getAuthorizationHeader(): Promise<string>;
}
