export interface Product {
    title: string;
    images: {
        primary: string;
        secondary: string;
    };
}
export declare enum Layout {
    PhotoMessage = 0,
    Message = 1,
    Photo = 2
}
export interface PersonlizationSteps {
    cardId?: number;
    updatingCardId?: number;
    customerId?: string;
    isAdmin?: boolean;
    isGuest?: boolean;
    quantity: number;
    isSendToMe: boolean;
    termAndCondition: {
        isAccepted: boolean;
        isError: boolean;
    };
    layout: Layout;
    popupRef?: any;
    swipeRef?: any;
    templateSelect: ITemplateSelection;
    stateLoading: {
        isLoadingCard: boolean;
        isAutoSaveLoading: boolean;
        isSavingCard: boolean;
        isLoadingAddresses: boolean;
    };
    savedCallback: (id: number) => any;
    savingCallback: () => any;
    backCallback: () => any;
    removePersonalizationCallback: () => any;
    listData: ListPagination<Card>;
    listCustomTemplates: ListPagination<CustomTemplate>;
    listBackgroundImages: ListPagination<BackgroundImage>;
    activeSteps: Step[];
    steps: Step[];
    activeStep: FlowStep;
    editingCustomTemplate?: CustomTemplate;
    modalNavigation: IModalNavigation;
    openChooseLayout: boolean;
    opened: boolean;
    listShippingMethods?: any[];
    shippingWarningMessage?: string | null;
    isUpdateAddressFromCart: boolean;
    updateAddressFromCart: string;
    isUpdatePersonalizationFromCart: boolean;
    isUpdateFromOrder: boolean;
    isSubcriber: boolean;
    isSubcriberP2orP3: boolean;
}
export interface BackgroundImage {
    assetId: string;
    url: string;
    width: number;
    height: number;
}
export interface ListPagination<T> {
    list: T[];
    pagination: Pagination;
    isLoading: boolean;
    isUpdating: boolean;
}
export declare enum FlowStep {
    None = -1,
    PersonlizationStep = 0,
    GiftCardStep = 1,
    AdrressStep = 2,
    ScheduleStep = 3
}
export declare enum SwipeFormType {
    CLOSE_CONFIRMATION = "closeConfirmation",
    CHOOSE_ADDRESS = "chooseAddress",
    ADDRESS_FORM_ADD = "addAddress",
    ADDRESS_FORM_EDIT = "editAddress",
    CHOOSE_SHIPPING = "chooseShipping",
    SCHEDULE_SHIPPING = "scheduleShipping",
    SCHEDULE_SHIPPING_DATE_PICKER = "scheduleShippingDatePicker"
}
export declare enum UpdateAddressParams {
    SHIPPING = "shipping",
    ADDRESS = "address",
    SCHEDULE_DATE = "scheduleDate"
}
export type UpdateAddressMode = '' | UpdateAddressParams;
export interface Step {
    name: string;
    description: string;
    isChanging: boolean;
    isSaving?: boolean;
    isValid: boolean;
    errors?: string[];
    data?: any;
    defaultData?: any;
    selectedDataContent?: any;
    listData?: ListPagination<any>;
    addressFormMode?: 'edit' | 'add' | undefined;
    temporaryFormData?: any;
}
export declare enum PageEnum {
    FRONT = 0,
    BACK = 1
}
export interface PersonalizationNoteStep extends Step {
    pageEditing: PageEnum;
    selectedDataContent?: ContentModel;
    defaultData: ContentModel;
    data: ContentModel;
    dataSimple: ContentModel;
    dataType: 'data' | 'dataSimple';
}
export interface PersonalizationData {
    id: number;
    name?: string;
    shopifyCustomerId: number;
    html?: string;
    config?: string;
    contentType?: number;
}
export interface GiftCardStep extends Step {
    defaultData: GiftCardFormData;
    data: GiftCardFormData;
}
export interface AddressStep extends Step {
    defaultData: SelectedAddress;
    data: SelectedAddress;
    listData?: ListPagination<GroupedAddress>;
    selectedDataContent?: any;
    temporaryFormData?: any;
}
export interface ScheduleStep extends Step {
    defaultData: OccasionModel;
    data: OccasionModel;
    listData?: ListPagination<OccasionModel>;
    selectedDataContent?: OccasionModel;
    saveOccasion: boolean;
    occasionName?: string;
    isLoading: boolean;
}
export declare enum EventDragType {
    InputChange = 0,
    Resize = 1,
    Drag = 2,
    Rotate = 3
}
export declare enum ItemTypes {
    Text = "text",
    Image = "image"
}
export declare enum ScheduleType {
    Now = "0",
    Delay = "1"
}
export interface GiftCardFormData {
    id: number;
    giftCardValue: number;
}
export interface Card {
    id: number;
    name: string;
    contentModel?: ContentModel;
    addressModel?: AddressModel;
    shopifyCustomerId: string;
    giftCardId?: number;
    giftCardAmount?: number;
    occasionModel?: OccasionModel;
    quantity: number;
    isSendToMe: boolean;
    scheduledDeliveryDate?: any;
    recipientType?: ScheduleType;
    shippingName?: string;
    shippingPrice?: string;
    shippingDescription?: string;
    serviceCode?: string;
}
export interface ContentModel {
    id: number;
    name: string;
    shopifyCustomerId: string;
    html: string;
    config: string;
    imageUrl: string;
    backHtml: string;
    backConfig: string;
    backImageUrl: string;
    contentType: number;
    simpleMessage: string;
    simpleImgUrl?: string;
    simpleImgOriginName?: string;
}
export interface GroupedAddress {
    name: string;
    addresses: AddressModel[];
}
export interface SelectedAddress {
    name: string;
    isDefaultData?: boolean;
    data: AddressModel;
}
export interface AddressModel {
    id: number;
    firstName: string;
    lastName: string;
    shopifyCustomerId: string;
    shopifyAddressId?: string;
    addressType: number;
    address: string;
    apt: string;
    city: string;
    stateProvince: string;
    postalCode: string;
    countryCode: string;
    isDefault?: boolean;
}
export interface OccasionModel {
    id: number;
    shopifyCustomerId: string;
    isDefault?: boolean;
    occasionType?: string;
    recipientType?: ScheduleType;
    scheduledDeliveryDate: any;
    shippingMethod?: {
        name: string;
        price: string;
        description: string;
        serviceCode: string;
    };
}
export interface Pagination {
    pageNum: number;
    pageSize: number;
    totalItem: number;
    nextCursor?: string;
}
export interface CustomerPagination extends Pagination {
    customerId: string;
}
export interface CustomTemplate {
    backImageUrl: string;
    backConfig: string;
    config: string;
    id: number;
    imageUrl: string;
    tags: string;
}
export interface DialogData {
    title: string;
    description: string;
    btnAgreeText: string;
    btnDisagreeText: string;
    autoClose: boolean;
    disableCloseClickOutside: boolean;
    onClose?: any;
    onAgree?: any;
}
export interface IDialog {
    showModal: boolean;
    modalData: DialogData;
}
export interface activeSwipeData {
    title: string;
    btnPrimaryText?: string;
    btnSecondaryText?: string;
}
export type HistoryItem = {
    id: SwipeFormType;
    data: any;
};
export interface ISwipe {
    activeSwipeData: activeSwipeData;
    activeSwipeId: string;
    swipeHistory: HistoryItem[];
}
export interface INotification {
    open: boolean;
    notificationData: NotificationData;
}
export declare enum LitePopupStep {
    Design = 0,
    SelectTemplate = 1
}
export interface ILitePopup {
    open: boolean;
    modalNavigation: IModalNavigation;
}
export interface NotificationData {
    type: NotificationType;
    message: string;
    vertical: "top" | "bottom";
    horizontal: "left" | "center" | "right";
}
export declare enum NotificationType {
    Success = "success",
    Error = "error",
    Warning = "warning",
    Info = "info"
}
export declare enum NavigationStep {
    SelectTemplateStep = 0,
    FirstStep = 1,
    SecondStep = 2,
    ThirdStep = 3
}
export interface IModalNavigation {
    steps: NavigationStepData[];
    activeStep: NavigationStepData;
    stepHistory: NavigationStepData[];
}
export interface NavigationButton {
    type: ButtonNavigationType;
    text: string;
    loading: boolean;
    disabled: boolean;
    onClick: any;
    buttonClass: string;
}
export declare enum ButtonNavigationType {
    Primary = 0,
    Secondary = 1
}
export interface NavigationStepData {
    step: NavigationStep;
    headerText: string;
    headerTextMobile?: string;
    descriptionText: string;
    buttonPrimary: NavigationButton;
    buttonSecondary: NavigationButton;
}
export interface IPopup {
    isOpen: boolean;
}
export interface IPreviewPopup extends IPopup {
    page: PageEnum;
}
export declare enum TemplateType {
    SavedTemplate = 0,
    AdminTemplate = 1
}
export interface StepperItem {
    id: number;
    stepName: string;
    container?: any;
}
export interface IStepper {
    steps: StepperItem[];
    activeStep: StepperItem;
}
export interface ITemplateSelection {
    listTag: string[];
    selectedTag: string;
    templateType: TemplateType;
    template: ContentModel | CustomTemplate;
    templateSelecting: boolean;
}
