export interface LineItemRequest {
    item: string;
    quantity: number;
}
export interface LineItemResponse {
    id: string;
    item: string;
    quantity: number;
    order: string | null;
}
export interface SavedStoreLineItem {
    id: string;
    item: string;
    quantity: number;
    order: string | null;
}
export declare type StoreLineItem = LineItemRequest;
export interface OrderProduct {
    id: string;
}
export interface CompleteAPIProduct {
    id: string;
    timestamp: string;
    item: string;
}
export interface Package {
    id: string;
    products: Array<OrderProduct>;
}
export interface CompleteAPIPackage {
    id: string;
    supplier_order_number: string;
    supplier_order_item_number: string;
    tracking_number: string;
    products: Array<OrderProduct>;
}
export declare type OrderStatus = "received" | "submitted" | "cancelled" | "payment_failed";
/**
 * The Redux Order interface for pre-saved orders.
 */
export interface StoreOrder {
    id?: string;
    userId?: string;
    paid?: boolean;
    status?: OrderStatus;
    channel?: string;
    createdAt?: string;
    coupon?: string;
    shipmentMethod?: string;
    phoneNumber: string;
    shipToName: string;
    shipToCompany?: string;
    shipToContact?: string;
    orderType?: string;
    shipToAddress: string;
    shipToAddress1?: string;
    shipToCity: string;
    shipToState: string;
    shipToPostalCode: string;
    shipToCountry: string;
    profile?: string | null;
    lineItems: Array<SavedStoreLineItem | StoreLineItem>;
    packages?: Array<Package>;
}
/**
 * The Redux Order interface for orders saved on the server.
 */
export interface SavedStoreOrder {
    id: string;
    userId: string;
    paid: boolean;
    status: OrderStatus;
    channel: string;
    createdAt: string;
    coupon: string;
    shipmentMethod: string;
    phoneNumber: string;
    shipToName: string;
    shipToCompany: string;
    shipToContact: string;
    orderType: string;
    shipToAddress: string;
    shipToAddress1: string;
    shipToCity: string;
    shipToState: string;
    shipToPostalCode: string;
    shipToCountry: string;
    profile: string | null;
    lineItems: Array<SavedStoreLineItem>;
    packages: Array<Package>;
}
/**
 * The Order interface for receiving data from the server.
 */
export interface APIOrderResponse {
    id: string;
    user_id: string;
    paid: boolean;
    status: OrderStatus;
    channel: string;
    created_at: string;
    coupon: string;
    shipment_method: string;
    phone_number: string;
    ship_to_name: string;
    ship_to_company: string;
    ship_to_contact: string;
    order_type: string;
    ship_to_address: string;
    ship_to_address1: string;
    ship_to_city: string;
    ship_to_state: string;
    ship_to_postal_code: string;
    ship_to_country: string;
    profile: string | null;
    line_items: Array<LineItemResponse>;
    packages: Array<Package>;
}
/**
 * The Order interface for sending data to the server.
 */
export interface APIOrderRequest {
    coupon?: string;
    phone_number: string;
    user_id?: string;
    ship_to_name: string;
    ship_to_company?: string;
    ship_to_contact?: string;
    ship_to_address: string;
    ship_to_address1?: string;
    ship_to_city: string;
    ship_to_state: string;
    ship_to_postal_code: string;
    ship_to_country: string;
    profile?: string | null;
    line_items: Array<LineItemRequest>;
}
