import { CountryCode } from '../common/market-metadata';
import { PriceModel, ProductImageModel } from '../components/product/model';
import { PaymentProviderId } from './market-types';
import { TipserImage } from '../common/types';
import { VariantAttributes } from '../common/analytics/tracking-event-dispatcher';
export declare enum CheckoutDiffType {
    TotalPrice = "TotalPrice",
    ItemQuantity = "ItemQuantity",
    ItemPrice = "ItemPrice"
}
export declare enum CheckoutCreateTransactionError {
    CheckoutAcknowledgementRequired = "CheckoutAcknowledgementRequired"
}
export declare type CheckoutDiff = {
    itemId: string;
    type: CheckoutDiffType;
    data: {
        oldValue: any;
        newValue: any;
    };
};
declare type CheckoutPaymentProvider = {
    id: PaymentProviderId;
    name: string;
    countryCode: string;
};
export declare type CheckoutMarket = {
    id: string;
    name: string;
    countryCode: CountryCode;
    paymentProviders: Array<CheckoutPaymentProvider>;
    locale: string;
    hasDynamicTax: boolean;
};
declare type CheckoutBrand = {
    id: string;
    name: string;
};
export declare type CheckoutMerchant = {
    id: string;
    name: string;
    organizationNumber: string;
    logo: TipserImage;
};
export declare type CheckoutMerchantWithSupportDetails = {
    supportDetails: CheckoutMerchantSupportDetails;
} & CheckoutMerchant;
export declare type CheckoutMerchantSupportDetails = {
    ownsCustomerSupport: boolean;
    supportEmail: string;
    supportUrl: string;
    supportTelephoneNumber: string;
    termsAndConditionsUrl: string | null;
    privacyPolicyUrl: string | null;
};
export declare type PriceTaxModel = {
    exTax: PriceModel;
    incTax: PriceModel;
};
declare type CheckoutPrices = {
    originalPrice: PriceTaxModel;
    discountedPrice: PriceTaxModel;
    finalPrice: PriceTaxModel;
};
export declare type CheckoutItemProduct = {
    id: string;
    variantId: string;
    name: string;
    description: string;
    deliveryNotes: string;
    brandId: string;
    merchantId: string;
    image: TipserImage;
    attributes: Array<{
        name: string;
        value: string;
    }>;
};
export declare type CheckoutItem = {
    id: string;
    quantity: number;
    maxQuantity: number;
    product: CheckoutItemProduct;
    prices: {
        originalPrice: PriceTaxModel;
        discountedPrice?: PriceTaxModel;
        finalPrice: PriceTaxModel;
    };
    posId: string;
};
export declare type ProductListItem = {
    attributes: VariantAttributes;
    brand: string;
    name: string;
    quantity: number;
    image: ProductImageModel[] | TipserImage;
    prices: {
        originalPrice: number;
        discountedPrice?: number;
        finalPrice: number;
    };
    posId: string;
    deliveryNotes: string;
};
export declare type PromotionCode = {
    id: string;
    code: string;
    isActive: boolean;
};
declare type CheckoutPos = {
    id: string;
    name: string;
    terms: string | null;
};
declare type CheckoutAddress = {
    streetAddress: string;
    zipCode: string;
    city: string;
    state: string;
    country: string;
};
export declare type CommonAddressDetails = {
    firstName: string;
    lastName: string;
    address: CheckoutAddress;
};
export declare type CheckoutModel = {
    id: string;
    version: number;
    isPriceReducedByCampaignOrPromotionCode: boolean;
    items: Array<CheckoutItem>;
    transactionId: string | null;
    diffs: Array<CheckoutDiff>;
    market: CheckoutMarket;
    brands: Array<CheckoutBrand>;
    merchants: Array<CheckoutMerchantWithSupportDetails>;
    promotionCodes: Array<PromotionCode>;
    pos: CheckoutPos;
    totals: {
        checkout: {
            items: {
                prices: CheckoutPrices;
            };
            shipping: {
                prices: CheckoutPrices;
            };
            total: {
                taxes: {
                    amount: PriceModel;
                    taxRates: [
                        {
                            taxRate: PriceModel;
                            amount: PriceModel;
                        }
                    ];
                };
                prices: CheckoutPrices;
            };
        };
        merchants: [
            {
                merchantId: string;
                items: {
                    prices: CheckoutPrices;
                };
                shipping: {
                    prices: CheckoutPrices;
                };
                total: {
                    prices: CheckoutPrices;
                };
                dutiesMayApply: boolean;
            }
        ];
    };
    deliveryDetails: CommonAddressDetails & {
        email: string;
        phoneNumber: string;
    };
    billingDetails: CommonAddressDetails;
};
export declare type CheckoutCreateTransactionResponse = {
    transactionId: string;
    clientSecret: string;
};
export {};
//# sourceMappingURL=checkout-types.d.ts.map