import { Address } from './address';
import { Customer } from './customer';
import { DiscountCode } from './discount_code';
import { LineItem } from './line_item';
import { NoteAttribute } from './note_attribute';
import { ShippingLine } from './shipping_line';
import { ShippingRate } from './shipping_rate';
import { TaxLine } from './tax_line';
/**
 * Represents an abandoned checkout.
 */
export interface Checkout {
    /**
     * A unique identifier for a particular checkout.
     */
    token: string;
    /**
     * The discount metadata generated by applying a discount code. A custom discount can also be added by specifying values for amount, title, description, value, and value_type.
     */
    applied_discount: {
        /**
         * The amount that is deducted from payment_due in presentment currency.
         */
        amount: string;
        /**
         * The title to categorize the applied discount.
         */
        title: string;
        /**
         * The description of the applied discount.
         */
        description: string;
        /**
         * The value that was used to calculate the final applied discount amount.
         */
        value: string;
        /**
         * The type of value that was used to calculate the final applied discount amount. Valid values: `fixed_amount` and `percentage`.
         */
        value_type: 'fixed_amount' | 'percentage';
        /**
         * The reason why the discount is not applicable, if the discount cannot be applied to the checkout.
         */
        non_applicable_reason: string | null;
        /**
         * Whether this discount code can be applied to the checkout.
         */
        applicable: boolean;
    };
    /**
     * The recovery URL that's sent to a customer so they can recover their checkout.
     * @deprecated
     */
    abandoned_checkout_url?: string;
    /**
     * The mailing address associated with the payment method.
     * @readonly
     */
    billing_address: Address;
    /**
     * Whether the customer would like to receive email updates from the shop.
     * This is set by the "I want to receive occasional emails about new products, promotions and other news" checkbox during checkout.
     */
    buyer_accepts_marketing: boolean;
    /**
     * The ID for the cart that's attached to the checkout.
     * @deprecated
     */
    cart_token?: string | null;
    /**
     * The date and time (ISO 8601 format) when the checkout was closed. If the checkout was not closed, then this value is null.
     * @readonly
     */
    closed_at: string | null;
    /**
     * The date and time (ISO 8601 format) when the checkout was completed. For abandoned checkouts, this value is always null.
     * @readonly
     */
    completed_at: string | null;
    /**
     * The date and time (ISO 8601 format) when the checkout was created.
     * @readonly
     */
    created_at: string;
    /**
     * The three-letter code (ISO 4217 format) of the shop's default currency at the time of checkout.
     * For the currency that the customer used at checkout, see presentment_currency.
     * @readonly
     */
    currency: string;
    /**
     * Information about the customer. For more information, see the Customer resource.
     */
    customer: Customer;
    /**
     * The two or three-letter language code, optionally followed by a region modifier.
     * Example values: en, en-CA.
     */
    customer_locale: string | null;
    /**
     * The ID of the Shopify POS device that created the checkout.
     */
    device_id: number | null;
    /**
     * Discount codes applied to the checkout. Returns an empty array when no codes are applied.
     */
    discount_codes: DiscountCode[];
    /**
     * The customer's email address.
     */
    email: string | null;
    /**
     * The payment gateway used by the checkout. For abandoned checkouts, this value is always null for abandoned checkouts.
     */
    gateway: string | null;
    /**
     * The URL for the page where the customer entered the shop.
     */
    landing_site: string;
    /**
     * A list of line items, each containing information about an item in the checkout.
     */
    line_items: LineItem[];
    /**
     * The ID of the physical location where the checkout was processed.
     */
    location_id: number | null;
    /**
     * The text of an optional note that a shop owner can attach to the order.
     */
    note: string | null;
    /**
     * Extra information that is added to the order.
     */
    note_attributes: NoteAttribute[];
    /**
     * An object containing the ID, name, and status page URL of the associated order when the checkout is complete.
     * Default value: null.
     * @readonly
     */
    order: {
        id: number;
        name: string;
        status_url: string;
    } | null;
    /**
     * The amount left to be paid in presentment currency.
     * This is equal to the sum of the checkout line prices, taxes, and shipping minus discounts and gift cards.
     * @readonly
     */
    payment_due: string;
    /**
     * The URL that must be used to store credit cards in Shopify's card vault.
     * These URLs are subject to change, so you should always use the one supplied here.
     * The general pattern for the URLs is https://elb.deposit.shopifycs.com/sessions.
     * @readonly
     */
    payment_url: string;
    /**
     * The customer's phone number.
     */
    phone: string | null;
    /**
     * The three-letter code (ISO 4217 format) of the currency that the customer used at checkout.
     * For the shop's default currency, see currency.
     *
     */
    presentment_currency: string;
    /**
     * Whether the checkout requires shipping.
     * If true, then `shipping_line` must be set before creating a payment.
     * @readonly
     */
    requires_shipping: boolean;
    /**
     * The website that referred the customer to the shop.
     */
    referring_site: string | null;
    /**
     * The mailing address where the order will be shipped to.
     */
    shipping_address?: Address;
    /**
     * The selected shipping rate.
     * A new shipping rate can be selected by updating the value for `handle`.
     * A shipping line is required when `requires_shipping` is `true`.
     * Learn more about selecting shipping rates: https://shopify.dev/docs/admin-api/rest/reference/sales-channels/checkout#shipping_rates
     */
    shipping_line: ShippingLine;
    /**
     * Information about the chosen shipping method.
     */
    shipping_lines: ShippingLine[];
    /**
     * The selected shipping rate. This property is not writable.
     * @readonly
     */
    shipping_rate: ShippingRate;
    /**
     * undocumented; always null in test data
     */
    source?: null | any;
    /**
     * undocumented string, which seems to be of the format `${location_id}-${POS_DEVICE_ID}-${POS_ORDER_NUMBER}` for POS orders, where `POS_DEVICE_ID` is an id associated with the device and `POS_ORDER_NUMBER` is counted up for each separate device
     */
    source_identifier: string | null;
    /**
     * Where the checkout originated.
     * Valid values: web, pos, iphone, android.
     */
    source_name: string;
    /**
     * undocumented; always null in test data
     */
    source_url?: null | any;
    /**
     * The price of the checkout before shipping and taxes.
     * @readonly
     */
    subtotal_price: string;
    /**
     * An array of tax line objects, each of which details a tax applicable to the checkout.
     */
    tax_lines: TaxLine[];
    /**
     * Whether taxes are included in the price.
     * @readonly
     */
    taxes_included: boolean;
    /**
     * The total amount of discounts to be applied.
     * @deprecated
     */
    total_discounts?: string;
    /**
     * The sum of the prices of all line items in the checkout.
     */
    total_line_items_price: string;
    /**
     * The sum of the prices of all line items in the checkout, discounts, shipping costs, and taxes.
     * @readonly
     */
    total_price: string;
    /**
     * The sum of all the taxes applied to the checkout.
     * @readonly
     */
    total_tax: string;
    /**
     * The sum of all the weights in grams of the line items in the checkout.
     * @deprecated
     */
    total_weight?: number;
    /**
     * The date and time (ISO 8601 format) when the checkout was last modified.
     * @readonly
     */
    updated_at: string;
    /**
     * The ID of the user who created the checkout. This value is passed to the order. Default value: null.
     */
    user_id: number | null;
    /**
     * The URL pointing to the checkout accessible from the web.
     * E.g. `"https://checkout.shopify.com/112233/checkouts/4207896aad57dfb159?key=123abc"`
     * @readonly
     */
    web_url: string;
}
