import { PartialNullableObject } from '../../types/utilTypes';
import { LineItem as RESTLineItem, Order as RESTOrder } from '../../types/ShopifyAdminREST';
import { ShopifyObjectModel } from './ShopifyObject';
/**
 * created_at and updated_at are useful when calculating desync by values since
 * line items have neither
 */
declare const OrderSummaryKeys: readonly ["id", "name", "created_at", "updated_at", "admin_graphql_api_id"];
declare type OrderSummaryKeys = typeof OrderSummaryKeys[number];
export declare type LineItemQueryResult = RESTLineItem & {
    order: OrderSummary;
};
export declare type OrderSummary = Pick<RESTOrder, OrderSummaryKeys>;
export declare function getOrderSummary(order: RESTOrder): OrderSummary;
export declare const OmittedLineItemKeys: readonly ["fulfillable_quantity", "origin_location", "fulfillment_service", "fulfillment_status", "id", "price_set", "total_discount_set", "duties", "discount_allocations", "tax_lines", "tip_payment_gateway", "tip_payment_method", "admin_graphql_api_id"];
export declare type OmittedLineItemKey = typeof OmittedLineItemKeys[number];
declare type RemainingLineItemKey = Exclude<keyof RESTLineItem, OmittedLineItemKey>;
declare type LineItemProps = Omit<RESTLineItem, OmittedLineItemKey> & {
    tax_lines_json: RESTLineItem['tax_lines'];
    duties_json: RESTLineItem['duties'];
    discount_allocations_json: RESTLineItem['discount_allocations'];
    total_grams: number;
    total_item_price: RESTLineItem['price'];
    variant: RESTLineItem['variant_id'];
    order_id: string;
    order: OrderSummary;
    id: string;
};
export declare const LineItemKeys: readonly [...RemainingLineItemKey[], "order_id", "order", "tax_lines_json", "id", "variant", "duties_json", "discount_allocations_json", "total_grams", "total_item_price"];
/**
 * Most of these are nullable if the related product / variant DNE
 * Will be present in the REST object but if being converted
 */
declare const NullablePropKeys: readonly ["grams", "name", "price", "product_id", "sku", "title", "variant_id", "variant_title", "variant", "total_grams", "total_item_price", "vendor"];
declare type NullablePropKey = typeof NullablePropKeys[number];
export declare type LineItemKey = (typeof LineItemKeys)[number];
export declare const LineItemTypeName = "line_items";
export declare type LineItemTypeName = typeof LineItemTypeName;
export interface LineItem extends ShopifyObjectModel {
    type: LineItemTypeName;
    props: PartialNullableObject<LineItemProps, NullablePropKey>;
}
export {};
