import Api, { IApiFetchOptions } from "../../lib/Api";
import { ICollectionDataOptions, IProductDataOptions, IArticlesDataOptions } from "../../types";
export interface IProduct {
    product_id: string;
    product_ean: string;
    product_label: string;
    product_friendly_name?: string;
    product_recommended_retail_price: string;
    product_weight: string;
    product_net_weight: string;
    product_gross_weight: string | null;
    product_packaging_units: string | null;
    product_packaging_container_type_info: string | null;
    product_packaging_value: string | null;
    product_packaging_gross_weight: string | null;
    product_collection_reference: string;
    product_groups: string[];
    "pro_adviced_price ": string;
    pro_animal_type: string;
    pro_cust_box: string;
    pro_deals_label: string;
    pro_inventory: string;
    pro_net_weight: string;
    pro_price: string;
    pro_price_cat: string;
    pro_price_catconv: string;
    pro_price_dog: string;
    pro_price_dogconv: string;
    pro_price_pos: string;
}
export declare type IGetCollectionsByTargetingInfoInputFilterByAll = {
    filter_type: "SPECIES";
    species_type?: string;
    univers?: string;
    breed?: string;
} | {
    filter_type: "NEUTERED";
    neutered: "YES" | "NO";
} | {
    filter_type: "GENDER";
    gender: "M" | "F";
} | {
    filter_type: "PURCHASE_PLACE";
    purchase_place: string;
} | {
    filter_type: "AGE";
    unit?: "WEEK" | "MONTH" | "YEAR";
    age?: string;
    age_from?: string;
    age_to?: string;
} | {
    filter_type: "RANGE";
    range_reference: string;
} | {
    filter_type: "PET_BCS";
    pet_bcs: number;
} | {
    filter_type: "PET_WEIGHT";
    pet_weight: string;
} | {
    filter_type: "PET_STAGES";
    pet_stages: string[];
} | {
    filter_type: "TARGET_AUDIENCE";
    public_visibility: "YES" | "NO";
    partners_visibility: "YES" | "NO";
    partner_types: string[];
} | {
    filter_type: "PET_ALLERGENS";
    pet_allergens: string[];
} | {
    filter_type: "PET_HEALTH_CONTEXT";
    pet_health_context: string[];
};
export interface IGetCollectionsByTargetingInfoInputFilterByAllSimple {
    filter_type: "SPECIES" | "NEUTERED" | "GENDER" | "PURCHASE_PLACE" | "AGE" | "RANGE" | "PET_BCS" | "PET_WEIGHT" | "PET_STAGES" | "TARGET_AUDIENCE" | "PET_ALLERGENS" | "PET_HEALTH_CONTEXT";
    species_type?: string;
    univers?: string;
    breed?: string;
    neutered?: "YES" | "NO";
    gender?: "M" | "F";
    purchase_place?: string;
    unit?: "WEEK" | "MONTH" | "YEAR";
    age?: string;
    age_from?: string;
    age_to?: string;
    range_reference?: string;
    pet_bcs?: number;
    pet_weight?: string;
    pet_stages?: string[];
    public_visibility?: "YES" | "NO";
    partners_visibility?: "YES" | "NO";
    partner_types?: string[];
    pet_allergens?: string[];
    pet_health_context?: string[];
}
export interface IGetCollectionsByTargetingInfoInput {
    partner_id?: string;
    partner_id_type?: string;
    deal_reference?: string;
    partner_group_handle?: string;
    pet_guid?: string;
    user_guid?: string;
    diagnostic_codes?: string;
    filter_by_all?: IGetCollectionsByTargetingInfoInputFilterByAllSimple[] | IGetCollectionsByTargetingInfoInputFilterByAll[];
    filter_type?: string;
    species_type?: string;
    univers?: string;
    breed?: string;
    neutered?: string;
    gender?: string;
    purchase_place?: string;
    unit?: string;
    age?: string;
    age_from?: string;
    age_to?: string;
    dob?: string;
    pathologies?: string;
    lifestyle?: string;
    operator?: string;
    range_reference?: string;
    pet_weight?: string;
    pet_bcs?: string;
    pet_stages?: string;
    partners_visibility?: string;
    public_visibility?: string;
    partner_types?: string;
    pet_allergens?: string;
    pet_health_context?: string;
    language?: string;
    use_https_urls?: string;
    show_ration?: string;
    apply_range_exlusions?: string;
    data_options?: IProductDataOptions;
    ration_predicted_weight?: string;
}
export declare type IGetArticlesByTargetingInfoInputFilterByAll = {
    filter_type: "SPECIES";
    species_type?: string;
    univers?: string;
    breed?: string;
} | {
    filter_type: "NEUTERED";
    neutered: "YES" | "NO";
} | {
    filter_type: "GENDER";
    gender: "M" | "F";
} | {
    filter_type: "AGE";
    unit?: "WEEK" | "MONTH" | "YEAR";
    age?: string;
    age_from?: string;
    age_to?: string;
} | {
    filter_type: "PATHOLOGIES";
    pathologies?: string[];
    operator?: "All" | "Any";
} | {
    filter_type: "LIFESTYLE";
    lifestyle?: string[];
    operator?: "All" | "Any";
} | {
    filter_type: "PET_BCS";
    pet_bcs: number;
} | {
    filter_type: "PET_STAGES";
    pet_stages: string[];
} | {
    filter_type: "PET_ALLERGENS";
    pet_allergens: string[];
} | {
    filter_type: "PET_HEALTH_CONTEXT";
    pet_health_context: string[];
};
export interface IGetArticlesByTargetingInfoInputFilterByAllSimple {
    filter_type: "SPECIES" | "NEUTERED" | "GENDER" | "AGE" | "PATHOLOGIES" | "LIFESTYLE" | "PET_BCS" | "PET_STAGES" | "PET_ALLERGENS" | "PET_HEALTH_CONTEXT";
    species_type?: string;
    universe?: string;
    breed?: string;
    neutered?: boolean;
    gender?: "M" | "F";
    unit?: "WEEK" | "MONTH" | "YEAR";
    age?: string;
    age_from?: string;
    age_to?: string;
    pathologies?: string[];
    lifestyle?: string[];
    operator?: "All" | "Any";
    pet_bcs?: number;
    pet_stages?: string[];
    pet_allergens?: string[];
    pet_health_context?: string[];
}
export interface IGetArticlesByTargetingInformationInput {
    filter_by_all: IGetArticlesByTargetingInfoInputFilterByAllSimple[] | IGetArticlesByTargetingInfoInputFilterByAll[];
    pet_guid?: string;
    filter_type?: string;
    species_type?: string;
    universe?: string;
    breed?: string;
    neutered?: string;
    gender?: string;
    unit?: string;
    age?: string;
    age_from?: string;
    age_to?: string;
    dob?: string;
    pathologies?: string[];
    lifestyle?: string[];
    operator?: string;
    pet_bcs?: number;
    pet_stages?: string[];
    pet_allergens?: string[];
    pet_health_context?: string[];
    language?: string;
    data_options?: IArticlesDataOptions;
    user_guid?: string;
}
export interface IGetArticlesByTargetingInformation {
    reference: string;
    generic_name: string;
    name: string;
    description: string;
    introduction: string;
    id: string;
    score: number;
    secondary_sorting_weight: string;
    max_score: number;
    content?: {
        category: string;
        category_picture_url: string;
        type?: string;
        header: string;
        body: string;
        link: string;
        link_text: string;
        picture_url: string;
        picture_target_link: string;
    };
    targeting?: {
        pathologies: string;
        pet_stage: {
            code: string;
        }[];
        pet_gender: string;
        pet_neutered: string;
        pet_lifestyle_code: {
            code: string;
        }[];
        sort_weight: string;
        pet_species: string[];
        pet_universe: string;
        pet_breed: string;
        pet_allergens: string;
        pet_health_context: string;
        pet_bcs_operator: string;
        pet_bcs_start: string;
        pet_bcs_end: string;
        pet_age_from: string;
        pet_age_to: string;
        pet_age_unit: string;
    };
    targeting_constraints?: {
        pet_stage_constraint: string;
        pet_gender_constraint: string;
        pet_neutered_constraint: string;
        pet_lifestyle_constraint: string;
        pet_species_constraint: string;
        pet_universe_constraint: string;
        pet_breed_constraint: string;
        pet_bcs_constraint: string;
        pet_health_context_constraint: string;
        pet_allergen_constraint: string;
        pet_age_constraint: string;
        special_needs_constraint: boolean;
    };
}
export interface IGetArticleInput {
    article_reference: string;
    language: string;
    data_options?: IArticlesDataOptions;
}
export interface IGetArticleByPetGuidInput {
    pet_guid: string;
    language?: string;
    data_options?: IArticlesDataOptions;
}
export interface IGetArticleByUserGuidInput {
    user_guid: string;
    language?: string;
    data_options?: IArticlesDataOptions;
}
export interface ICollectionAvailablePackage {
    ean: string;
    label: string;
    weight: string;
    net_weight: string;
    gross_weight: null;
    packaging_units: string;
    packaging_value: string;
    packaging_gross_weight: string | null;
    container_type_info: {
        code: string;
        generic_name: string;
        tranlated_name: {
            fr: string;
        };
        measure_type: string;
        measure_unit: string;
    };
}
export interface IGetCollectionsByTargetingInfoCollection {
    reference: string;
    generic_name: string;
    name: string;
    energy_level: number;
    has_image: boolean;
    description: string;
    tag_line: string;
    introduction: string;
    id: string;
    score: number;
    secondary_sorting_weight: string;
    range_priority_order: string;
    max_score: number;
    pf_tracking_reference: string;
    criteria_source_reference: string | null;
    images?: {
        image: string;
        image_small: string;
        image_medium: string;
        image_large: string;
    };
    product_groups?: string[];
    available_packages?: ICollectionAvailablePackage[];
}
export interface IGetCollectionByPetGUIDInput {
    pet_guid: string;
    user_guid?: string;
    partner_id?: string;
    partner_id_type?: string;
    partner_group_handle?: string;
    language?: string;
    add_clientof_partner_groups?: string;
    use_https_urls?: string;
    apply_range_exlusions?: string;
    data_options?: string[];
    is_gestation?: string;
    sort_order?: string;
    component_sort_order?: string;
    ignore_old_format?: string;
}
export interface IGetCollectionWithProductsInput {
    use_https_urls?: 0 | 1;
    collection_reference?: string;
    product_group_handle?: string;
    add_product_details?: 0 | 1;
    add_product_groups?: 0 | 1;
    lang?: string;
}
export interface IGetCollectionWithProducts {
    collection_reference: string;
    collection_generic_name: string;
    collection_name: string;
    collection_range_reference: string;
    collection_range_family_reference: string;
    has_image: 0 | 1;
    collection_image?: string;
    collection_image_small?: string;
    collection_image_medium?: string;
    collection_image_large?: string;
    products: {
        product_label: string;
        product_friendly_name?: string;
        product_recommended_retail_price?: string;
        product_weight: string;
        product_ean: string;
        product_code: string;
        product_groups: string[];
        pro_brand_label?: string;
        pro_range: string;
        pro_range_name: string;
        pro_member_price?: string;
        pro_rank?: string;
        pro_stock?: string;
        pro_stock_location?: string;
        pro_url_fr?: string;
        pro_url_nl?: string;
    }[];
}
export interface IGetCollectionByPetGUID {
    reference: string;
    generic_name: string;
    name: string;
    energy_level: number;
    has_image: 1 | 0;
    excluded_pathologies: string;
    description: string;
    tag_line: string;
    introduction: string;
    range_reference: string;
    family_reference: string;
    stage: [{
        code: "ADULT";
        name: "ADULT";
    }, {
        code: "MATURE";
        name: "MATURE";
    }];
    image: string;
    image_small: string;
    image_medium: string;
    image_large: string;
    criteria_match: string;
    criteria_requested: string;
    criteria_defined: string;
    criteria_source: string;
    secondary_sorting_weight: string;
    pf_tracking_reference: string;
    criteria_source_reference: string;
    range?: {
        reference: string;
        generic_name: string;
        priority: string;
        name: string;
        tag_line: string;
        description: string;
        targeting: {
            incl_partner_groups: string[];
            excl_partner_groups: string[];
            incl_places_purchase: string[];
            excl_places_purchase: string[];
        };
    };
}
export interface IGetCollectionDetailsInput {
    collection_reference: string;
    language: string;
    use_https_urls?: 0 | 1;
    data_options?: ICollectionDataOptions;
    component_sort_order?: string;
    ignore_old_format?: string;
}
export interface ICollectionDetailBenefit {
    id: string;
    title: string;
    description: string;
    image: string;
}
export interface ICollectionDetailProduct {
    ean: string;
    code: string;
    label: string;
    weight?: string | null;
    net_weight?: string | null;
    gross_weight?: string | null;
}
export interface ICollectionDetailRelatedCollection {
    reference: string;
    type: string;
}
export interface ICollectionDetail {
    reference: string;
    generic_name: string;
    name: string;
    energy_level: number;
    has_image: 0 | 1;
    contains: [];
    does_not_contain: [];
    caloric_table: null;
    benefits: ICollectionDetailBenefit[];
    key_benefits?: string[];
    collection_reference: string;
    collection_generic_name: string;
    collection_name: string;
    collection_description: string;
    collection_tag_line: string;
    collection_introduction: string;
    collection_range_reference: string;
    collection_range_family_reference: string;
    collection_energy_level: number;
    collection_image?: string;
    collection_image_small?: string;
    collection_image_medium?: string;
    collection_image_large?: string;
    collection_caloric_table: null;
    images?: {
        image?: string | null;
        image_small?: string | null;
        image_medium?: string | null;
        image_large?: string | null;
    };
    products?: ICollectionDetailProduct[];
    related_collections?: ICollectionDetailRelatedCollection[];
    range?: {
        reference: string;
        generic_name: string;
        priority: string;
        name: string;
        tag_line: string;
        description: string;
        targeting: {
            incl_partner_groups: string[];
            excl_partner_groups: string[];
            incl_places_purchase: string[];
            excl_places_purchase: string[];
        };
    };
    available_packages?: {
        ean: string;
        code: string;
        label: string;
        weight?: string;
        net_weight?: string;
        gross_weight?: string;
        packaging_units?: string;
        packaging_value?: string;
        packaging_gross_weight?: string;
        container_type_info?: string;
    }[];
}
export interface IProductGroupListItem {
    product_group_handle: string;
    product_group_name: string;
}
export interface IFindProductCollectionInput {
    use_https_urls?: 0 | 1;
    resolve_by: string;
    value: string;
    language?: string;
    data_options?: ICollectionDataOptions;
    component_sort_order?: string;
    ignore_old_format?: 0 | 1;
    search_mode?: "exact" | "sounds_like" | "looks_like" | "partial_string" | "partial_words";
}
export declare type ApproximationCodes = "APC001" | "APC002" | "APC003" | "APC004" | "APC005" | "APC006";
/**
 * * **@pet_weight**: required only if pet has no weight set
 */
export interface IGetCollectionPetRationInput {
    pet_weight?: string;
    pet_guid: string;
    pet_predicted_adult_weight?: string;
    pet_bcs?: string;
    energy_level?: string;
    collection_reference?: string;
    language?: string;
}
export interface ICollectionPetRation {
    debug: {
        exponent: number;
        constant: number;
    };
    energy_value: number;
    ration_value: number;
    energy_value_unit: string;
    ration_value_unit: string;
    approximation_codes: ApproximationCodes[];
    ration_in_cups_per_day: string;
    number_of_cups_per_day: string;
}
export interface IAddProductInput {
    product_ean: number | string;
    product_label: string;
    product_code: string;
    product_status: 1 | 0;
    product_collection_reference?: string;
    product_collection_gen_name?: string;
    product_group_handles?: string;
    product_friendly_name?: string;
    product_rr_price?: string;
    product_pp_price?: string;
    product_weight?: number;
    product_gross_weight?: number;
    product_packaging_container_type?: string;
    product_packaging_value?: string;
    product_packaging_units?: number;
    product_packaging_gross_weight?: number;
    product_publicly_not_available?: 1 | 0;
    custom_fields?: Record<string, string>;
}
export default class Products extends Api {
    defaultHost: string;
    errorMap: {
        1000: {
            message: string;
        };
        1001: {
            message: string;
        };
        1002: {
            message: string;
        };
        1003: {
            message: string;
        };
        1004: {
            message: string;
        };
        1005: {
            message: string;
        };
        1006: {
            message: string;
        };
        1014: {
            message: string;
        };
        1024: {
            message: string;
        };
        1027: {
            message: string;
        };
        1028: {
            message: string;
        };
        1060: {
            message: string;
        };
        1008: {
            message: string;
        };
        1009: {
            message: string;
        };
        1015: {
            message: string;
        };
        1016: {
            message: string;
        };
        1017: {
            message: string;
        };
        1021: {
            message: string;
        };
        1023: {
            message: string;
        };
        1058: {
            message: string;
        };
        1030: {
            message: string;
        };
        1034: {
            message: string;
        };
        1035: {
            message: string;
        };
        1939: {
            message: string;
        };
        1940: {
            message: string;
        };
        1941: {
            message: string;
        };
        1942: {
            message: string;
        };
        1943: {
            message: string;
        };
        1954: {
            message: string;
        };
        1955: {
            message: string;
        };
        1968: {
            message: string;
        };
        1969: {
            message: string;
        };
        1973: {
            message: string;
        };
        1974: {
            message: string;
        };
        1975: {
            message: string;
        };
        1977: {
            message: string;
        };
        1979: {
            message: string;
        };
        1980: {
            message: string;
        };
        1981: {
            message: string;
        };
        1982: {
            message: string;
        };
        1983: {
            message: string;
        };
        1984: {
            message: string;
        };
        1991: {
            message: string;
        };
        1992: {
            message: string;
        };
        1989: {
            message: string;
        };
        2005: {
            message: string;
        };
        2010: {
            message: string;
        };
    };
    _call(action: string, data: any, options?: IApiFetchOptions): Promise<any>;
    getProduct(data: {
        product_ean?: string;
        product_code?: string;
    }): Promise<{
        data: IProduct;
    }>;
    getCollectionDetails(data: IGetCollectionDetailsInput): Promise<{
        data: ICollectionDetail;
    }>;
    findProductCollection(data: IFindProductCollectionInput): Promise<{
        data: [ICollectionDetail];
    }>;
    getCollectionsByTargetingInfo(data: IGetCollectionsByTargetingInfoInput): Promise<{
        data: IGetCollectionsByTargetingInfoCollection[];
    }>;
    getCollectionsByPetGUID(data: IGetCollectionByPetGUIDInput): Promise<{
        data: IGetCollectionByPetGUID[];
    }>;
    getCollectionsWithProducts(data?: IGetCollectionWithProductsInput): Promise<{
        data: IGetCollectionWithProducts[];
    }>;
    getProductGroupList(data?: {
        group_handle?: string;
    }): Promise<{
        data: IProductGroupListItem[];
    }>;
    getCollectionAvailablePackage(data?: {
        collection_reference: string;
        show_public_products_only?: 0 | 1;
        use_https_urls?: 0 | 1;
        language?: string;
    }): Promise<{
        data: {
            reference: string;
            products: ICollectionAvailablePackage[];
        }[];
    }>;
    getCollectionPetRation(data?: IGetCollectionPetRationInput): Promise<{
        data: ICollectionPetRation;
    }>;
    getArticlesByTargetingInformation(data: IGetArticlesByTargetingInformationInput): Promise<{
        data: IGetArticlesByTargetingInformation[];
    }>;
    getArticlesByPetGuid(data: IGetArticleByPetGuidInput): Promise<{
        data: IGetArticlesByTargetingInformation[];
    }>;
    getArticlesByUserGuid(data: IGetArticleByUserGuidInput): Promise<{
        data: IGetArticlesByTargetingInformation[];
    }>;
    getArticle(data: IGetArticleInput): Promise<{
        data: IGetArticlesByTargetingInformation;
    }>;
    addProduct({ custom_fields, ...fields }: IAddProductInput): Promise<{
        statusCode: number;
    }>;
}
