/**
 * 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 { OrderPickupDetailsCurbsidePickupDetails } from './OrderPickupDetailsCurbsidePickupDetails';
import { OrderPickupDetailsRecipient } from './OrderPickupDetailsRecipient';
/**
 *
 * @export
 * @interface OrderPickupDetails
 */
export interface OrderPickupDetails {
    /**
     *
     * @type {Date}
     * @memberof OrderPickupDetails
     */
    readonly accepted_at?: Date | null;
    /**
     * The duration of time after which an open and accepted pickup fulfillment is automatically moved to the COMPLETED state. The duration must be in RFC 3339 format (for example, 'P1W3D').
     * @type {string}
     * @memberof OrderPickupDetails
     */
    auto_complete_duration?: string | null;
    /**
     * A description of why the pickup was canceled.
     * @type {string}
     * @memberof OrderPickupDetails
     */
    cancel_reason?: string | null;
    /**
     * Indicating when this fulfillment expires if it is not accepted. The timestamp must be in RFC 3339 format
     * (for example, "2016-09-04T23:59:33.123Z"). The expiration time can only be set up to 7 days in the future.
     * If `expires_at` is not set, this pickup fulfillment is automatically accepted when
     * placed.
     * @type {Date}
     * @memberof OrderPickupDetails
     */
    expires_at?: Date;
    /**
     * The schedule type of the pickup fulfillment.
     * @type {string}
     * @memberof OrderPickupDetails
     */
    schedule_type?: OrderPickupDetailsScheduleType;
    /**
     * The timestamp that represents the start of the pickup window. Must be in RFC 3339 timestamp format, e.g.,
     * "2016-09-04T23:59:33.123Z".
     *
     * For fulfillments with the schedule type `ASAP`, this is automatically set
     * to the current time plus the expected duration to prepare the fulfillment.
     * @type {Date}
     * @memberof OrderPickupDetails
     */
    pickup_at?: Date;
    /**
     * The window of time in which the order should be picked up after the `pickup_at` timestamp.
     * Must be in RFC 3339 duration format, e.g., "P1W3D". Can be used as an
     * informational guideline for merchants.
     * @type {string}
     * @memberof OrderPickupDetails
     */
    pickup_window_duration?: string;
    /**
     * The duration of time it takes to prepare this fulfillment.
     * The duration must be in RFC 3339 format (for example, "P1W3D").
     * @type {string}
     * @memberof OrderPickupDetails
     */
    prep_time_duration?: string;
    /**
     * A note meant to provide additional instructions about the pickup
     * fulfillment displayed in the Square Point of Sale application and set by the API.
     * @type {string}
     * @memberof OrderPickupDetails
     */
    note?: string;
    /**
     * Indicating when the fulfillment was placed. The timestamp must be in RFC 3339 format
     * (for example, "2016-09-04T23:59:33.123Z").
     * @type {Date}
     * @memberof OrderPickupDetails
     */
    placed_at?: Date;
    /**
     * Indicating when the fulfillment was rejected. The timestamp must be in RFC 3339 format
     * (for example, "2016-09-04T23:59:33.123Z").
     * @type {Date}
     * @memberof OrderPickupDetails
     */
    rejected_at?: Date;
    /**
     * Indicating when the fulfillment is marked as ready for pickup. The timestamp must be in RFC 3339 format
     * (for example, "2016-09-04T23:59:33.123Z").
     * @type {Date}
     * @memberof OrderPickupDetails
     */
    ready_at?: Date;
    /**
     * Indicating when the fulfillment expired. The timestamp must be in RFC 3339 format
     * (for example, "2016-09-04T23:59:33.123Z").
     * @type {Date}
     * @memberof OrderPickupDetails
     */
    expired_at?: Date;
    /**
     * Indicating when the fulfillment was picked up by the recipient. The timestamp must be in RFC 3339 format
     * (for example, "2016-09-04T23:59:33.123Z").
     * @type {Date}
     * @memberof OrderPickupDetails
     */
    picked_up_at?: Date;
    /**
     * Indicating when the fulfillment was canceled. The timestamp must be in RFC 3339 format
     * (for example, "2016-09-04T23:59:33.123Z").
     * @type {Date}
     * @memberof OrderPickupDetails
     */
    canceled_at?: Date;
    /**
     * If set to `true`, indicates that this pickup order is for curbside pickup, not in-store pickup.
     * @type {boolean}
     * @memberof OrderPickupDetails
     */
    is_curbside_pickup?: boolean;
    /**
     *
     * @type {OrderPickupDetailsCurbsidePickupDetails}
     * @memberof OrderPickupDetails
     */
    curbside_pickup_details?: OrderPickupDetailsCurbsidePickupDetails;
    /**
     *
     * @type {OrderPickupDetailsRecipient}
     * @memberof OrderPickupDetails
     */
    recipient?: OrderPickupDetailsRecipient;
}
/**
 * @export
 * @enum {string}
 */
export declare enum OrderPickupDetailsScheduleType {
    scheduled = "scheduled"
}
export declare function OrderPickupDetailsFromJSON(json: any): OrderPickupDetails;
export declare function OrderPickupDetailsFromJSONTyped(json: any, ignoreDiscriminator: boolean): OrderPickupDetails;
export declare function OrderPickupDetailsToJSON(value?: OrderPickupDetails | null): any;
