import { MailingAddressFragment, Maybe, MoneyBagFragment, OrderModelFragment } from '../../../types/ShopifyGraphQLAdminAPI';
import { ShopifyObjectModel } from '../ShopifyObject';
import { OmittedOrderPropsKey, OrderPropsKey } from './OrderPropsKeys';
export declare type MailingAddressParts<AddressType extends string> = {
    [K in Exclude<keyof MailingAddressFragment, '__typename'> as `${Uncapitalize<AddressType>}${Capitalize<K & string>}`]: MailingAddressFragment[K];
};
declare type MoneyBagShopCurrencyAmount = Maybe<MoneyBagFragment['shopMoney']['amount']>;
export declare type BillingAddressProps = MailingAddressParts<'billingAddress'>;
export declare type DisplayAddressProps = MailingAddressParts<'displayAddress'>;
export declare type ShippingAddressProps = MailingAddressParts<'shippingAddress'>;
declare type SummarizedLineItemCurrencyKeys = 'discountedTotal' | 'discountedUnitPrice' | 'originalTotal' | 'originalUnitPrice' | 'totalDiscount' | 'unfulfilledDiscountedTotal' | 'unfulfilledOriginalTotal';
declare type LineItemMoneyBagPropNames = `${SummarizedLineItemCurrencyKeys}Set`;
declare type LineItem = OrderModelFragment['lineItems']['edges'][number]['node'];
declare type LineItem__Light = Omit<LineItem, LineItemMoneyBagPropNames> & Record<SummarizedLineItemCurrencyKeys, MoneyBagShopCurrencyAmount>;
declare type _OrderProps = Record<OrderPropsKey, unknown>;
declare type OrderProps = _OrderProps & Omit<OrderModelFragment, OmittedOrderPropsKey> & {
    /**
     * In order to simplify the order model, we'll only be using shopMoney amount from MoneyBag objects.
     * `order.currencyCode` contains the currency of the store at the time of the order so we can use that to determine
     * the currency of all MoneyBag fields. We'll display amounts assuming the shop's currency.
     *
     * We'll also remove the "set" from the property names since we're only dealing with numerical amounts now.
     */
    cartDiscountAmount: MoneyBagShopCurrencyAmount;
    currentCartDiscountAmount: MoneyBagShopCurrencyAmount;
    currentSubtotalPrice: MoneyBagShopCurrencyAmount;
    currentTotalDiscounts: MoneyBagShopCurrencyAmount;
    currentTotalDuties: MoneyBagShopCurrencyAmount;
    currentTotalPrice: MoneyBagShopCurrencyAmount;
    currentTotalTax: MoneyBagShopCurrencyAmount;
    netPayment: MoneyBagShopCurrencyAmount;
    originalTotalDuties: MoneyBagShopCurrencyAmount;
    originalTotalPrice: MoneyBagShopCurrencyAmount;
    refundDiscrepancy: MoneyBagShopCurrencyAmount;
    subtotalPrice: MoneyBagShopCurrencyAmount;
    totalCapturable: MoneyBagShopCurrencyAmount;
    totalDiscounts: MoneyBagShopCurrencyAmount;
    totalOutstanding: MoneyBagShopCurrencyAmount;
    totalPrice: MoneyBagShopCurrencyAmount;
    totalReceived: MoneyBagShopCurrencyAmount;
    totalRefunded: MoneyBagShopCurrencyAmount;
    totalRefundedShipping: MoneyBagShopCurrencyAmount;
    totalShippingPrice: MoneyBagShopCurrencyAmount;
    totalTax: MoneyBagShopCurrencyAmount;
    totalTipReceived: MoneyBagShopCurrencyAmount;
    lineItems_json: LineItem__Light[];
    currentTaxLines_json: OrderModelFragment['currentTaxLines'];
    customAttributes_json: OrderModelFragment['customAttributes'];
    customer_json: Omit<NonNullable<OrderModelFragment['customer']>, 'addresses'> | undefined;
    customerJourneySummary_json: OrderModelFragment['customerJourneySummary'];
    disputes_json: OrderModelFragment['disputes'];
    fulfillments_json: OrderModelFragment['fulfillments'];
    paymentCollectionDetails_json: OrderModelFragment['paymentCollectionDetails'];
    risks_json: OrderModelFragment['risks'];
    shippingLine_json: OrderModelFragment['shippingLine'];
    taxLines_json: OrderModelFragment['taxLines'];
    transactions_json: OrderModelFragment['transactions'];
    physicalLocationId: NonNullable<OrderModelFragment['physicalLocation']>['id'] | undefined;
    publicationId: NonNullable<OrderModelFragment['publication']>['id'] | undefined;
} & BillingAddressProps & DisplayAddressProps & ShippingAddressProps;
export declare const OrderTypeName = "orders";
export declare type OrderTypeName = typeof OrderTypeName;
export interface Order extends ShopifyObjectModel {
    type: OrderTypeName;
    props: OrderProps;
}
export {};
