import { ShopifyProduct, ShopifyProductImage } from "./shopify";
export interface ResourceDocument {
    id: string;
    keywords: Array<string>;
    version?: string;
    createdAt?: string;
    updatedAt?: string;
}
export declare enum ResourceType {
    ActivityLog = "activity_log",
    Product = "product",
    Collection = "collection",
    Curation = "curation",
    CurationPin = "curation_pin",
    CurationHiding = "curation_hiding",
    Callout = "callout",
    SettingsAccount = "account_settings",
    SettingsAutomation = "automation_settings",
    SettingsProduct = "product_settings",
    FilterGroup = "filter_group",
    FilterFacet = "filter_facet",
    MergedValue = "merged_value",
    Redirect = "redirect",
    Relevancy = "relevancy",
    Sort = "sort",
    Antonym = "antonym",
    Synonym = "synonym",
    Task = "task",
    SearchableField = "searchable_field"
}
export declare enum MerchandisingCalloutAutofillBehaviour {
    Always = "always",
    MoreResults = "more_results"
}
export declare const MerchandisingCalloutAutofillBehaviourLabel: Record<MerchandisingCalloutAutofillBehaviour, string>;
export declare enum SharedStoreResource {
    Curation = "curation",
    Callout = "callout",
    FilterGroup = "filter_group",
    FilterFacet = "filter_facet",
    MergedValue = "merged_value",
    Redirect = "redirect",
    Relevancy = "relevancy",
    Sort = "sort",
    Synonym = "synonym",
    SettingsAccount = "account_settings",
    SettingsAutomation = "automation_settings",
    SettingsProduct = "product_settings"
}
export declare const SharedStoreResourceLabels: Record<SharedStoreResource, string>;
export interface Relevance extends ResourceDocument {
    field: string;
    enabled: boolean;
    importance: number;
    searchType: "always_search" | "search_page" | "instant_search";
    hidden?: boolean;
}
export declare const DefinedFieldType: {
    readonly Array: "array";
    readonly Text: "text";
    readonly Float: "float";
    readonly Long: "long";
    readonly Boolean: "boolean";
};
export type DefinedFieldType = typeof DefinedFieldType[keyof typeof DefinedFieldType] | (string & {});
export interface DefinedField {
    label: string;
    name: string;
    type: DefinedFieldType;
}
export interface Sort extends ResourceDocument {
    name: string;
    handle: string;
    field: string;
    position: number;
    enabled: boolean;
    direction: "desc" | "asc";
    visibility: "all" | "search" | "collection";
    hidden?: boolean;
}
export interface FilterGroup extends ResourceDocument {
    name: string;
    handle: string;
    enabled: boolean;
    pageSize: number;
    collections: Array<string>;
    type: "search" | "collection";
    paginationType: "pagination" | "load_more" | "next_prev" | "infinite_scroll";
    inventoryVisibility: "show_all" | "hide_products" | "hide_variants" | "hide_all";
}
export interface FilterFacet extends ResourceDocument {
    name: string;
    field: string;
    handle: string;
    position: number;
    enabled: boolean;
    keywords: Array<string>;
    customSortOrder?: string;
    displayType: "multi" | "single" | "slider";
    displayView: "list" | "check" | "swatch" | "range" | "box";
    displaySize: string;
    displaySliderStep: string;
    displaySliderPrefix: string;
    displaySliderSuffix: string;
    displayRangeOptions: Array<string>;
    settingsShowMore: boolean;
    settingsUppercase: boolean;
    settingsShowSearch: boolean;
    settingsShowFilter: boolean;
    settingsShowEmptyValues: boolean;
    settingsHideUnavailable: boolean;
    settingsCollapsedMobile: boolean;
    settingsCollapsedDesktop: boolean;
    settingsFilterLogic: "and" | "or";
    valuesShow: "all" | "manual";
    valuesManual: Array<string>;
    valuesExclude: Array<string>;
}
export interface Redirect extends ResourceDocument {
    url: string;
    query: string;
    enabled: boolean;
    hidden?: boolean;
}
export interface Curation extends ResourceDocument {
    title: string;
    status: CurationStatus;
    published: boolean;
    searchTerm?: string;
    longRunningTask?: boolean;
    collectionHandle?: string;
    collectionId?: string;
    type: CurationType;
    /** @deprecated */
    boosting?: {
        groupings?: BoostGrouping[];
        sortings?: BoostSorting[];
    };
    sort?: CurationSort;
    schedule?: CurationSchedule;
    scheduleEnabled?: boolean;
    scheduleTimezone?: string;
    hidden?: boolean;
    markets: Array<string>;
    boostings?: Boosting[];
    sortings?: Sorting[];
}
export declare enum CurationType {
    Search = "search",
    Collection = "collection"
}
export interface CurationSort {
    sortTag?: string;
    sortOption: string;
    sortDirection: "asc" | "desc";
    sortVariantOption?: "option1" | "option2" | "option3";
}
export interface CurationSchedule {
    schedulePublish: string;
    schedulePublishEnabled: boolean;
    scheduleUnpublish: string;
    scheduleUnpublishEnabled: boolean;
}
export declare enum CurationStatus {
    Draft = "draft",
    Publishing = "publishing",
    Published = "published",
    Error = "error",
    Unpublishing = "unpublishing",
    Resetting = "resetting",
    Pinning = "pinning",
    Sorting = "sorting"
}
export interface CurationHiding {
    productId: number;
}
export interface Market {
    id: string;
    label: string;
    enabled: boolean;
    publicationId: string;
    locationId: string;
    currencyCode?: string;
    countryCode?: string;
}
/** @deprecated This entity will be removed once the curation is fully refactored into merchandisable entities  */
export interface BoostGrouping {
    key: string;
    value: string;
    field: string;
    position: number;
    operation: string;
}
/** @deprecated This entity will be removed once the curation is fully refactored into merchandisable entities  */
export interface BoostSorting {
    key: string;
    field: string;
    query?: string;
    position: number;
    direction: "asc" | "desc";
}
export interface Link {
    content: string;
    url: string;
    key: string;
}
export interface Callout extends ResourceDocument {
    type: CalloutType;
    link: string;
    links: Array<Link>;
    title: string;
    content: string;
    enabled: boolean;
    textColor: string;
    mobileImage: string;
    mobileVideo: string;
    desktopVideo: string;
    desktopImage: string;
    backgroundColor: string;
    visibility: "desktop" | "mobile" | "all";
    displayColumns: string;
    displayRows: string;
    selectedDates?: {
        end: number;
        start: number;
    };
    hidden?: boolean;
}
export declare enum CalloutType {
    Standard = "standard",
    Autofill = "autofill"
}
export declare enum SynonymType {
    Group = "group",
    Oneway = "oneway"
}
export interface Synonym extends ResourceDocument {
    name: string;
    enabled: boolean;
    synonyms: Array<string>;
    type: SynonymType;
    hidden?: boolean;
}
export interface Antonym extends ResourceDocument {
    name: string;
    enabled: boolean;
    antonyms: Array<string>;
    hidden?: boolean;
}
export interface MergedValue extends ResourceDocument {
    name: string;
    field: string;
    enabled: boolean;
    values: Array<string>;
    hidden?: boolean;
}
export interface Collection extends ResourceDocument {
    title: string;
    handle: string;
    shopifyId: string;
    productIds: Array<string>;
    storefrontId: string;
    legacyResourceId: number;
    syncStatus?: "error" | "complete" | "partiallyComplete";
    syncAt?: string;
}
export type Product = ResourceDocument & Omit<ShopifyProduct, "variants" | "images" | "media" | "metafields" | "category" | "unpublishedPublications"> & {
    category: string;
    variants: Array<Omit<ShopifyProduct["variants"]["edges"][0]["node"], "presentmentPrices"> & {
        productId?: string;
        images?: Array<ShopifyProductImage>;
        presentmentPrices: ShopifyProduct["variants"]["edges"][0]["node"]["presentmentPrices"]["edges"][0]["node"][];
        marketPrices: Array<{
            marketId: string;
            price: {
                amount: string;
                currencyCode: string;
            };
            compareAtPrice: {
                amount: string;
                currencyCode: string;
            } | null;
        }>;
    }>;
    related?: Array<string>;
    images: Array<ShopifyProductImage>;
    media: ShopifyProduct["media"]["edges"][0]["node"][];
    metafields: ShopifyProduct["metafields"]["edges"][0]["node"][];
    keywords: Array<string>;
    syncStatus?: "error" | "complete" | "partiallyComplete";
    syncAt?: string;
    markets?: Array<string>;
};
export interface SearchableField extends ResourceDocument {
    field: string;
    enabled: boolean;
    hidden?: boolean;
    points: number;
    allowedMistakes: number;
    mistakePenaltyPercent: number;
    synyonymEnabled: boolean;
    synonymPenaltyPercent: number;
}
export interface Boosting {
    key: string;
    fieldName: string;
    operation: Operation;
    value: string;
    points: number;
}
export interface Sorting {
    field: string;
    position: number;
    direction: "asc" | "desc";
}
export declare const Operation: {
    readonly Equals: "equals";
    readonly NotEquals: "not equals";
    readonly Contains: "contains";
    readonly NotContains: "not contains";
    readonly LessThan: "less than";
    readonly GreaterThan: "greater than";
};
export type Operation = typeof Operation[keyof typeof Operation];
