import type { LineItemType } from './LineItemType';
import type { LineItemAttribute } from './LineItemAttribute';
import type { Tax } from './Tax';
/**
 *
 * @export
 * @interface LineItem
 */
export interface LineItem {
    /**
     * The calculated tax amount per unit.
     * @type {number}
     * @memberof LineItem
     */
    readonly taxAmountPerUnit?: number;
    /**
     * The line item price with discounts not applied, excluding taxes.
     * @type {number}
     * @memberof LineItem
     */
    readonly undiscountedAmountExcludingTax?: number;
    /**
     * The number of items that were purchased.
     * @type {number}
     * @memberof LineItem
     */
    readonly quantity?: number;
    /**
     * The calculated price per unit with discounts not applied, including taxes.
     * @type {number}
     * @memberof LineItem
     */
    readonly undiscountedUnitPriceIncludingTax?: number;
    /**
     * The line item price with discounts applied, excluding taxes.
     * @type {number}
     * @memberof LineItem
     */
    readonly amountExcludingTax?: number;
    /**
     * The line item price with discounts not applied, including taxes.
     * @type {number}
     * @memberof LineItem
     */
    readonly undiscountedAmountIncludingTax?: number;
    /**
     * A set of tax lines, each of which specifies a tax applied to the item.
     * @type {Set<Tax>}
     * @memberof LineItem
     */
    readonly taxes?: Set<Tax>;
    /**
     *
     * @type {LineItemType}
     * @memberof LineItem
     */
    type?: LineItemType;
    /**
     * The calculated price per unit with discounts applied, including taxes.
     * @type {number}
     * @memberof LineItem
     */
    readonly unitPriceIncludingTax?: number;
    /**
     * The discount allocated to the item, excluding taxes.
     * @type {number}
     * @memberof LineItem
     */
    readonly discountExcludingTax?: number;
    /**
     * Whether the item required shipping.
     * @type {boolean}
     * @memberof LineItem
     */
    readonly shippingRequired?: boolean;
    /**
     * The calculated price per unit with discounts applied, excluding taxes.
     * @type {number}
     * @memberof LineItem
     */
    readonly unitPriceExcludingTax?: number;
    /**
     * The name of the product, ideally in the customer's language.
     * @type {string}
     * @memberof LineItem
     */
    readonly name?: string;
    /**
     * A map of custom information for the item.
     * @type {{ [key: string]: LineItemAttribute; }}
     * @memberof LineItem
     */
    readonly attributes?: {
        [key: string]: LineItemAttribute;
    };
    /**
     * The calculated price per unit with discounts not applied, excluding taxes.
     * @type {number}
     * @memberof LineItem
     */
    readonly undiscountedUnitPriceExcludingTax?: number;
    /**
     * The line item price with discounts applied, including taxes.
     * @type {number}
     * @memberof LineItem
     */
    readonly amountIncludingTax?: number;
    /**
     * The discount allocated to the item, including taxes.
     * @type {number}
     * @memberof LineItem
     */
    readonly discountIncludingTax?: number;
    /**
     * The SKU (stock-keeping unit) of the product.
     * @type {string}
     * @memberof LineItem
     */
    readonly sku?: string;
    /**
     * The sum of all taxes applied to the item.
     * @type {number}
     * @memberof LineItem
     */
    readonly taxAmount?: number;
    /**
     * The total tax rate applied to the item, calculated from the rates of all tax lines.
     * @type {number}
     * @memberof LineItem
     */
    readonly aggregatedTaxRate?: number;
    /**
     * The unique identifier of the line item within the set of line items.
     * @type {string}
     * @memberof LineItem
     */
    readonly uniqueId?: string;
}
/**
 * Check if a given object implements the LineItem interface.
 */
export declare function instanceOfLineItem(value: object): value is LineItem;
export declare function LineItemFromJSON(json: any): LineItem;
export declare function LineItemFromJSONTyped(json: any, ignoreDiscriminator: boolean): LineItem;
export declare function LineItemToJSON(json: any): LineItem;
export declare function LineItemToJSONTyped(value?: Omit<LineItem, 'taxAmountPerUnit' | 'undiscountedAmountExcludingTax' | 'quantity' | 'undiscountedUnitPriceIncludingTax' | 'amountExcludingTax' | 'undiscountedAmountIncludingTax' | 'taxes' | 'unitPriceIncludingTax' | 'discountExcludingTax' | 'shippingRequired' | 'unitPriceExcludingTax' | 'name' | 'attributes' | 'undiscountedUnitPriceExcludingTax' | 'amountIncludingTax' | 'discountIncludingTax' | 'sku' | 'taxAmount' | 'aggregatedTaxRate' | 'uniqueId'> | null, ignoreDiscriminator?: boolean): any;
