/**
 * Apideck
 * The Apideck OpenAPI Spec: SDK Optimized
 *
 * The version of the OpenAPI document: 10.13.0
 * Contact: support@apideck.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { PassThroughBody } from './PassThroughBody';
import { TimeOffRequestNotes } from './TimeOffRequestNotes';
/**
 *
 * @export
 * @interface TimeOffRequest
 */
export interface TimeOffRequest {
    /**
     * A unique identifier for an object.
     * @type {string}
     * @memberof TimeOffRequest
     */
    readonly id?: string;
    /**
     * ID of the employee
     * @type {string}
     * @memberof TimeOffRequest
     */
    employee_id?: string | null;
    /**
     * ID of the policy
     * @type {string}
     * @memberof TimeOffRequest
     */
    policy_id?: string | null;
    /**
     * The status of the time off request.
     * @type {string}
     * @memberof TimeOffRequest
     */
    status?: TimeOffRequestStatus;
    /**
     * Description of the time off request.
     * @type {string}
     * @memberof TimeOffRequest
     */
    description?: string | null;
    /**
     * The start date of the time off request.
     * @type {string}
     * @memberof TimeOffRequest
     */
    start_date?: string | null;
    /**
     * The end date of the time off request.
     * @type {string}
     * @memberof TimeOffRequest
     */
    end_date?: string | null;
    /**
     * The date the request was made.
     * @type {string}
     * @memberof TimeOffRequest
     */
    request_date?: string | null;
    /**
     * The type of request
     * @type {string}
     * @memberof TimeOffRequest
     */
    request_type?: TimeOffRequestRequestType;
    /**
     * The date the request was approved
     * @type {string}
     * @memberof TimeOffRequest
     */
    approval_date?: string | null;
    /**
     * The unit of time off requested. Possible values include: `hours`, `days`, or `other`.
     * @type {string}
     * @memberof TimeOffRequest
     */
    units?: TimeOffRequestUnits;
    /**
     * The amount of time off requested.
     * @type {number}
     * @memberof TimeOffRequest
     */
    amount?: number | null;
    /**
     * The day part of the time off request.
     * @type {string}
     * @memberof TimeOffRequest
     */
    day_part?: string | null;
    /**
     *
     * @type {TimeOffRequestNotes}
     * @memberof TimeOffRequest
     */
    notes?: TimeOffRequestNotes;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     * @type {object}
     * @memberof TimeOffRequest
     */
    readonly custom_mappings?: object | null;
    /**
     * The user who last updated the object.
     * @type {string}
     * @memberof TimeOffRequest
     */
    readonly updated_by?: string | null;
    /**
     * The user who created the object.
     * @type {string}
     * @memberof TimeOffRequest
     */
    readonly created_by?: string | null;
    /**
     * The date and time when the object was last updated.
     * @type {Date}
     * @memberof TimeOffRequest
     */
    readonly updated_at?: Date | null;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof TimeOffRequest
     */
    readonly created_at?: Date | null;
    /**
     *
     * @type {PassThroughBody}
     * @memberof TimeOffRequest
     */
    pass_through?: PassThroughBody;
    /**
     * The policy type of the time off request
     * @type {string}
     * @memberof TimeOffRequest
     */
    policy_type?: string;
}
/**
 * @export
 * @enum {string}
 */
export declare enum TimeOffRequestStatus {
    requested = "requested",
    approved = "approved",
    declined = "declined",
    cancelled = "cancelled",
    deleted = "deleted",
    other = "other"
}
/**
 * @export
 * @enum {string}
 */
export declare enum TimeOffRequestRequestType {
    vacation = "vacation",
    sick = "sick",
    personal = "personal",
    jury_duty = "jury_duty",
    volunteer = "volunteer",
    bereavement = "bereavement",
    other = "other"
}
/**
 * @export
 * @enum {string}
 */
export declare enum TimeOffRequestUnits {
    days = "days",
    hours = "hours",
    other = "other"
}
export declare function TimeOffRequestFromJSON(json: any): TimeOffRequest;
export declare function TimeOffRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): TimeOffRequest;
export declare function TimeOffRequestToJSON(value?: TimeOffRequest | null): any;
