import * as z from "zod";
import { OpenEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { ApplicationAttachment, ApplicationAttachment$Outbound } from "./applicationattachment.js";
import { AtsDocumentApiModel, AtsDocumentApiModel$Outbound } from "./atsdocumentapimodel.js";
import { CandidateEmail, CandidateEmail$Outbound } from "./candidateemail.js";
import { CustomFields, CustomFields$Outbound } from "./customfields.js";
import { PhoneNumber, PhoneNumber$Outbound } from "./phonenumber.js";
import { Questionnaire, Questionnaire$Outbound } from "./questionnaire.js";
import { RejectedReason, RejectedReason$Outbound } from "./rejectedreason.js";
import { ResultLink, ResultLink$Outbound } from "./resultlink.js";
import { SocialLink, SocialLink$Outbound } from "./sociallink.js";
export type Application4 = {};
/**
 * The source value of the application status.
 */
export type ApplicationSourceValue = Application4 | string | number | boolean | Array<any>;
/**
 * The status of the application.
 */
export declare enum ApplicationValue {
    Active = "active",
    Assessment = "assessment",
    BackgroundCheck = "background_check",
    Converted = "converted",
    DeclinedByCandidate = "declined_by_candidate",
    Hired = "hired",
    Interview = "interview",
    Lead = "lead",
    Offer = "offer",
    ReferenceCheck = "reference_check",
    Rejected = "rejected",
    Review = "review",
    Screen = "screen",
    New = "new",
    Onboarding = "onboarding",
    Created = "created",
    Accepted = "accepted",
    ShortList = "short_list",
    Approved = "approved",
    UnmappedValue = "unmapped_value"
}
/**
 * The status of the application.
 */
export type ApplicationValueOpen = OpenEnum<typeof ApplicationValue>;
export type ApplicationStatus = {
    /**
     * The source value of the application status.
     */
    sourceValue?: Application4 | string | number | boolean | Array<any> | null | undefined;
    /**
     * The status of the application.
     */
    value?: ApplicationValueOpen | null | undefined;
};
export type ApplicationCandidate = {
    /**
     * Candidate company
     */
    company?: string | null | undefined;
    /**
     * Email of the candidate
     */
    email?: string | null | undefined;
    /**
     * List of candidate emails
     */
    emails?: Array<CandidateEmail> | null | undefined;
    /**
     * First name of the candidate
     */
    firstName?: string | null | undefined;
    /**
     * Last name of the candidate
     */
    lastName?: string | null | undefined;
    /**
     * Candidate name
     */
    name?: string | null | undefined;
    /**
     * List of candidate phone numbers including the type of the number when available
     */
    phoneNumbers?: Array<PhoneNumber> | null | undefined;
    /**
     * List of candidate social links
     */
    socialLinks?: Array<SocialLink> | null | undefined;
    /**
     * Candidate title
     */
    title?: string | null | undefined;
};
export type ApplicationInterviewStage = {
    /**
     * Interview Stage created date
     */
    createdAt?: Date | null | undefined;
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    name?: string | null | undefined;
    order?: number | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
    /**
     * Custom Unified Fields configured in your StackOne project
     */
    unifiedCustomFields?: {
        [k: string]: any;
    } | null | undefined;
    /**
     * Interview Stage updated date
     */
    updatedAt?: Date | null | undefined;
};
export type Source = {
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    /**
     * The source of the application
     */
    name?: string | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
};
export type Application = {
    applicationStatus?: ApplicationStatus | null | undefined;
    /**
     * Use `documents` expand instead
     *
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    attachments?: Array<ApplicationAttachment> | null | undefined;
    candidate?: ApplicationCandidate | null | undefined;
    /**
     * Unique identifier of the candidate
     */
    candidateId?: string | null | undefined;
    /**
     * Date of creation
     */
    createdAt?: Date | null | undefined;
    /**
     * The application custom fields
     */
    customFields?: Array<CustomFields> | null | undefined;
    /**
     * The documents attached to this application (eg. resume, cover letter etc.)
     */
    documents?: Array<AtsDocumentApiModel> | null | undefined;
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    interviewStage?: ApplicationInterviewStage | null | undefined;
    /**
     * Unique identifier of the interview stage
     */
    interviewStageId?: string | null | undefined;
    /**
     * Unique identifier of the job
     */
    jobId?: string | null | undefined;
    /**
     * Unique identifier of the location
     */
    locationId?: string | null | undefined;
    /**
     * Unique identifiers of the locations
     */
    locationIds?: Array<string> | null | undefined;
    /**
     * Questionnaires associated with the application
     */
    questionnaires?: Array<Questionnaire> | null | undefined;
    /**
     * Date of rejection
     */
    rejectedAt?: Date | null | undefined;
    /**
     * Unique identifiers of the rejection reasons
     */
    rejectedReasonIds?: Array<string> | null | undefined;
    rejectedReasons?: Array<RejectedReason> | null | undefined;
    /**
     * Provider's unique identifier of the candidate
     */
    remoteCandidateId?: string | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
    /**
     * Provider's unique identifier of the interview stage
     */
    remoteInterviewStageId?: string | null | undefined;
    /**
     * Provider's unique identifier of the job
     */
    remoteJobId?: string | null | undefined;
    /**
     * Provider's unique identifier of the location
     */
    remoteLocationId?: string | null | undefined;
    /**
     * Remote's unique identifiers of the locations
     */
    remoteLocationIds?: Array<string> | null | undefined;
    /**
     * Provider's unique identifiers of the rejection reasons
     */
    remoteRejectedReasonIds?: Array<string> | null | undefined;
    resultLinks?: Array<ResultLink> | null | undefined;
    source?: Source | null | undefined;
    /**
     * Custom Unified Fields configured in your StackOne project
     */
    unifiedCustomFields?: {
        [k: string]: any;
    } | null | undefined;
    /**
     * Date of last update
     */
    updatedAt?: Date | null | undefined;
};
/** @internal */
export declare const Application4$inboundSchema: z.ZodType<Application4, z.ZodTypeDef, unknown>;
/** @internal */
export type Application4$Outbound = {};
/** @internal */
export declare const Application4$outboundSchema: z.ZodType<Application4$Outbound, z.ZodTypeDef, Application4>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Application4$ {
    /** @deprecated use `Application4$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Application4, z.ZodTypeDef, unknown>;
    /** @deprecated use `Application4$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Application4$Outbound, z.ZodTypeDef, Application4>;
    /** @deprecated use `Application4$Outbound` instead. */
    type Outbound = Application4$Outbound;
}
export declare function application4ToJSON(application4: Application4): string;
export declare function application4FromJSON(jsonString: string): SafeParseResult<Application4, SDKValidationError>;
/** @internal */
export declare const ApplicationSourceValue$inboundSchema: z.ZodType<ApplicationSourceValue, z.ZodTypeDef, unknown>;
/** @internal */
export type ApplicationSourceValue$Outbound = Application4$Outbound | string | number | boolean | Array<any>;
/** @internal */
export declare const ApplicationSourceValue$outboundSchema: z.ZodType<ApplicationSourceValue$Outbound, z.ZodTypeDef, ApplicationSourceValue>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ApplicationSourceValue$ {
    /** @deprecated use `ApplicationSourceValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ApplicationSourceValue, z.ZodTypeDef, unknown>;
    /** @deprecated use `ApplicationSourceValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ApplicationSourceValue$Outbound, z.ZodTypeDef, ApplicationSourceValue>;
    /** @deprecated use `ApplicationSourceValue$Outbound` instead. */
    type Outbound = ApplicationSourceValue$Outbound;
}
export declare function applicationSourceValueToJSON(applicationSourceValue: ApplicationSourceValue): string;
export declare function applicationSourceValueFromJSON(jsonString: string): SafeParseResult<ApplicationSourceValue, SDKValidationError>;
/** @internal */
export declare const ApplicationValue$inboundSchema: z.ZodType<ApplicationValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const ApplicationValue$outboundSchema: z.ZodType<ApplicationValueOpen, z.ZodTypeDef, ApplicationValueOpen>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ApplicationValue$ {
    /** @deprecated use `ApplicationValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ApplicationValueOpen, z.ZodTypeDef, unknown>;
    /** @deprecated use `ApplicationValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ApplicationValueOpen, z.ZodTypeDef, ApplicationValueOpen>;
}
/** @internal */
export declare const ApplicationStatus$inboundSchema: z.ZodType<ApplicationStatus, z.ZodTypeDef, unknown>;
/** @internal */
export type ApplicationStatus$Outbound = {
    source_value?: Application4$Outbound | string | number | boolean | Array<any> | null | undefined;
    value?: string | null | undefined;
};
/** @internal */
export declare const ApplicationStatus$outboundSchema: z.ZodType<ApplicationStatus$Outbound, z.ZodTypeDef, ApplicationStatus>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ApplicationStatus$ {
    /** @deprecated use `ApplicationStatus$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ApplicationStatus, z.ZodTypeDef, unknown>;
    /** @deprecated use `ApplicationStatus$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ApplicationStatus$Outbound, z.ZodTypeDef, ApplicationStatus>;
    /** @deprecated use `ApplicationStatus$Outbound` instead. */
    type Outbound = ApplicationStatus$Outbound;
}
export declare function applicationStatusToJSON(applicationStatus: ApplicationStatus): string;
export declare function applicationStatusFromJSON(jsonString: string): SafeParseResult<ApplicationStatus, SDKValidationError>;
/** @internal */
export declare const ApplicationCandidate$inboundSchema: z.ZodType<ApplicationCandidate, z.ZodTypeDef, unknown>;
/** @internal */
export type ApplicationCandidate$Outbound = {
    company?: string | null | undefined;
    email?: string | null | undefined;
    emails?: Array<CandidateEmail$Outbound> | null | undefined;
    first_name?: string | null | undefined;
    last_name?: string | null | undefined;
    name?: string | null | undefined;
    phone_numbers?: Array<PhoneNumber$Outbound> | null | undefined;
    social_links?: Array<SocialLink$Outbound> | null | undefined;
    title?: string | null | undefined;
};
/** @internal */
export declare const ApplicationCandidate$outboundSchema: z.ZodType<ApplicationCandidate$Outbound, z.ZodTypeDef, ApplicationCandidate>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ApplicationCandidate$ {
    /** @deprecated use `ApplicationCandidate$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ApplicationCandidate, z.ZodTypeDef, unknown>;
    /** @deprecated use `ApplicationCandidate$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ApplicationCandidate$Outbound, z.ZodTypeDef, ApplicationCandidate>;
    /** @deprecated use `ApplicationCandidate$Outbound` instead. */
    type Outbound = ApplicationCandidate$Outbound;
}
export declare function applicationCandidateToJSON(applicationCandidate: ApplicationCandidate): string;
export declare function applicationCandidateFromJSON(jsonString: string): SafeParseResult<ApplicationCandidate, SDKValidationError>;
/** @internal */
export declare const ApplicationInterviewStage$inboundSchema: z.ZodType<ApplicationInterviewStage, z.ZodTypeDef, unknown>;
/** @internal */
export type ApplicationInterviewStage$Outbound = {
    created_at?: string | null | undefined;
    id?: string | null | undefined;
    name?: string | null | undefined;
    order?: number | null | undefined;
    remote_id?: string | null | undefined;
    unified_custom_fields?: {
        [k: string]: any;
    } | null | undefined;
    updated_at?: string | null | undefined;
};
/** @internal */
export declare const ApplicationInterviewStage$outboundSchema: z.ZodType<ApplicationInterviewStage$Outbound, z.ZodTypeDef, ApplicationInterviewStage>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ApplicationInterviewStage$ {
    /** @deprecated use `ApplicationInterviewStage$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ApplicationInterviewStage, z.ZodTypeDef, unknown>;
    /** @deprecated use `ApplicationInterviewStage$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ApplicationInterviewStage$Outbound, z.ZodTypeDef, ApplicationInterviewStage>;
    /** @deprecated use `ApplicationInterviewStage$Outbound` instead. */
    type Outbound = ApplicationInterviewStage$Outbound;
}
export declare function applicationInterviewStageToJSON(applicationInterviewStage: ApplicationInterviewStage): string;
export declare function applicationInterviewStageFromJSON(jsonString: string): SafeParseResult<ApplicationInterviewStage, SDKValidationError>;
/** @internal */
export declare const Source$inboundSchema: z.ZodType<Source, z.ZodTypeDef, unknown>;
/** @internal */
export type Source$Outbound = {
    id?: string | null | undefined;
    name?: string | null | undefined;
    remote_id?: string | null | undefined;
};
/** @internal */
export declare const Source$outboundSchema: z.ZodType<Source$Outbound, z.ZodTypeDef, Source>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Source$ {
    /** @deprecated use `Source$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Source, z.ZodTypeDef, unknown>;
    /** @deprecated use `Source$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Source$Outbound, z.ZodTypeDef, Source>;
    /** @deprecated use `Source$Outbound` instead. */
    type Outbound = Source$Outbound;
}
export declare function sourceToJSON(source: Source): string;
export declare function sourceFromJSON(jsonString: string): SafeParseResult<Source, SDKValidationError>;
/** @internal */
export declare const Application$inboundSchema: z.ZodType<Application, z.ZodTypeDef, unknown>;
/** @internal */
export type Application$Outbound = {
    application_status?: ApplicationStatus$Outbound | null | undefined;
    attachments?: Array<ApplicationAttachment$Outbound> | null | undefined;
    candidate?: ApplicationCandidate$Outbound | null | undefined;
    candidate_id?: string | null | undefined;
    created_at?: string | null | undefined;
    custom_fields?: Array<CustomFields$Outbound> | null | undefined;
    documents?: Array<AtsDocumentApiModel$Outbound> | null | undefined;
    id?: string | null | undefined;
    interview_stage?: ApplicationInterviewStage$Outbound | null | undefined;
    interview_stage_id?: string | null | undefined;
    job_id?: string | null | undefined;
    location_id?: string | null | undefined;
    location_ids?: Array<string> | null | undefined;
    questionnaires?: Array<Questionnaire$Outbound> | null | undefined;
    rejected_at?: string | null | undefined;
    rejected_reason_ids?: Array<string> | null | undefined;
    rejected_reasons?: Array<RejectedReason$Outbound> | null | undefined;
    remote_candidate_id?: string | null | undefined;
    remote_id?: string | null | undefined;
    remote_interview_stage_id?: string | null | undefined;
    remote_job_id?: string | null | undefined;
    remote_location_id?: string | null | undefined;
    remote_location_ids?: Array<string> | null | undefined;
    remote_rejected_reason_ids?: Array<string> | null | undefined;
    result_links?: Array<ResultLink$Outbound> | null | undefined;
    source?: Source$Outbound | null | undefined;
    unified_custom_fields?: {
        [k: string]: any;
    } | null | undefined;
    updated_at?: string | null | undefined;
};
/** @internal */
export declare const Application$outboundSchema: z.ZodType<Application$Outbound, z.ZodTypeDef, Application>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Application$ {
    /** @deprecated use `Application$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Application, z.ZodTypeDef, unknown>;
    /** @deprecated use `Application$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Application$Outbound, z.ZodTypeDef, Application>;
    /** @deprecated use `Application$Outbound` instead. */
    type Outbound = Application$Outbound;
}
export declare function applicationToJSON(application: Application): string;
export declare function applicationFromJSON(jsonString: string): SafeParseResult<Application, SDKValidationError>;
//# sourceMappingURL=application.d.ts.map