import Api from "../../lib/Api";
import { IDeal, IDealListItem, IDirectCashbackDealDetail, IDirectCashbackRedemptionInput, IDirectCashbackRedemptionRequestInput, IDirectCashbackVoucherDetail, IUserDirectCashbackDealEligiblePet, IUserEligibleDirectCashbackDeal } from "../../types";
import { IDealProduct } from "../../deal-types";
export interface IRedeemWithReceiptInput {
    barcode: string;
    receipt_date: string;
    mime_type: string;
    product_ean_code?: string;
    redemption_partner_extid?: string;
}
export interface IGetDealsListInput {
    partner_extid?: string;
    saving_product_ean?: string;
    saving_collection_reference?: string;
    benefit_product_ean?: string;
    benefit_collection_reference?: string;
    pet_search_by?: "PET_UNIVERSE" | "PET_BREED" | "PET_TYPE";
    pet_search_val?: string;
    deal_type?: string;
    display_on_terminal?: 0 | 1;
    deal_visibility?: "all" | "public";
    active_only?: 0 | 1;
    deal_group_handle?: string;
    excl_deal_group_handle?: string;
}
interface IUpdateSecureCodePropertiesInput {
    access_code: string;
    status?: string;
    referral_partner_ext_id?: string;
    expiry_date?: string;
    deal_ref?: string;
}
export interface ISubscribeToDealInput {
    user_guid: string;
    ref: string;
    partner_extid?: string;
    ean_code?: string;
    collection_ref?: string;
    secure_code?: string;
    pet_guid?: string;
    child_guid?: string;
    external_tracking_ref?: string;
    iban?: string;
    bic?: string;
    referral_code?: string;
    referral_code_type?: string;
    delivery_address_id?: string;
    lang?: string;
    utm_source?: string;
    utm_campaign?: string;
    utm_medium?: string;
}
interface ISubscribeToDealReturnPartner {
    name: string;
    street1: string;
    street2: string;
    streetnum: string;
    postal_code: string;
    city: string;
    region: string;
    country: string;
    id: string;
    extid: string;
    type: string;
    lat: string;
    lng: string;
    pub_name: string;
    pub_street1: string;
    pub_street2: string;
    pub_streetnum: string;
    pub_postal_code: string;
    pub_city: string;
    pub_region: string;
    pub_country: string;
    distance: string;
    ptn_status: string;
}
export interface ISubscribeToDealReturn {
    id: number;
    user_guid: string;
    external_tracking_reference: string;
    ts_created: string;
    barcode: string;
    secure_code: string;
    subs_partner_id: number;
    coupon_id: number;
    status: string;
    pet_guid: string;
    pet_status: string;
    ts_redeemed: string;
    barcode_url: string;
    ts_subscribe: string;
    product_id: string;
    product: string;
    saving_end_date: string;
    redeem_validity_from: string;
    redeem_validity_to: string;
    redirect_url: string;
    referral_partner: string[];
    delivery_address: string[];
    partner: ISubscribeToDealReturnPartner;
    deal: IDeal;
}
export interface ISubscribeToDirectCashbackDealInput {
    user_guid: string;
    deal_ref: string;
    pet_guid?: string;
    child_guid?: string;
}
export interface IDealEligiblePet {
    pet_guid: string;
    pet_name: string;
}
export interface IDirectCashbackVoucherListInput {
    user_guid: string;
    pet_guid?: string;
    child_guid?: string;
    from?: string;
    to?: string;
    deal_ref?: string;
    p_length?: string;
    p_page?: string;
}
interface IPageInfo {
    p_total: number;
    p_length: number;
    p_page: number;
}
export interface IDirectCashbackVoucherList extends IPageInfo {
    records: IDirectCashbackVoucherListItem[];
}
export interface IDirectCashbackVoucherListItem {
    user_guid: string;
    barcode: string;
    pet_guid?: string;
    child_guid?: string;
    status: string;
    ts_created: string;
    benefit_id?: string;
    deal_ref: string;
    benefit_amount?: string;
    benefit_currency?: string;
    benefit_product_id?: string;
    redemption_request_in_progress: 0 | 1;
    subs_ts_subscribe: string;
    external_tracking_reference?: string;
    subs_partner_id?: string;
    coupon_id: number;
    ts_redeemed?: string;
    restriction_code?: string;
    redeem_validity_from: string;
    redeem_validity_to: string;
    num_invi_resend: number;
    ts_last_send?: string;
    invt_link?: string;
}
export interface IDirectCashbackRedemptionRequestListInput {
    user_guid: string;
    status?: string;
    barcode?: string;
    sort_field?: string;
    sort_order?: string;
    p_length?: string;
    p_page?: string;
}
export interface IDirectCashbackRedemptionRequestDetailInput {
    receipt_id?: string;
}
export interface IDirectCashbackRedemptionRequestDetail {
    id: string;
    image_url: string;
    barcode: string;
    payment_type: string;
    status: string;
    benefit: IDirectCashbackRedemptionRequestDetailBenefit;
    iban: string;
    bic: string;
    created_on: string;
    updated_on: string;
}
export interface IDirectCashbackRedemptionRequestDetailBenefit {
    amount: string;
    currency: string;
}
export interface IDirectCashbackDealBenefit {
    benefit_id: string;
    benefit_value: string;
    benefit_type: string;
}
export interface IDirectCashbackRedemptionRequestList extends IPageInfo {
    records: IDirectCashbackRedemptionRequestListItem[];
}
export interface IDirectCashbackRedemptionRequestListItem {
    user_guid: string;
    image_url: string;
    benefit_id: string;
    barcode: string;
    status: string;
    iban: string;
    bic: string;
    created_on: string;
    updated_on: string;
    deal: {
        ref: string;
    };
}
interface IDirectCashbackVoucherApprovalHistorySubscriptionHistory {
    status: string;
    changed_on: string;
}
interface IDirectCashbackVoucherApprovalHistoryRedemptionRequestHistory {
    id: string;
    created_on: string;
    updated_on: string;
    transaction_id: string;
    external_payment_ref: string;
    payment_ref: {
        iban: string;
    };
    payment_id: string;
    estimated_delivery_date: string;
    status: string;
    image_url: string;
    history: {
        changed_on: string;
        old_status: string;
        new_status: string;
        message: string;
        error?: string;
        description?: string;
    }[];
}
export interface IDirectCashbackVoucherApprovalHistory {
    sub_id: string;
    sub_barcode: string;
    sub_current_status: string;
    sub_created: string;
    sub_updated: string;
    sub_history: IDirectCashbackVoucherApprovalHistorySubscriptionHistory[];
    sub_redemption_requests: IDirectCashbackVoucherApprovalHistoryRedemptionRequestHistory[];
}
export declare type IDirectCashbackDealDataOptions = IDirectCashbackDealDataOption | IDirectCashbackDealDataOption[];
declare type IDirectCashbackDealDataOption = "basic_details" | "benefits" | "benefit_product_detail";
export interface IDirectCashbackDealDetailInput {
    ref: string;
    default_lang?: string;
    data_options?: IDirectCashbackDealDataOptions;
}
export declare type IDealDataOptions = IDealDataOption | IDealDataOption[];
declare type IDealDataOption = "collection_association" | "basic_details" | "products" | "product_collections" | "product_collection_images" | "product_quantity_details" | "benefits" | "benefit_product_details" | "benefit_products" | "benefit_product_collections" | "benefit_product_collection_images" | "partner_restriction_detail" | "partner_restrictions" | "groups" | "pet_restrictions" | "loyalty_reward" | "pet_tags" | "pet_stages" | "subscription_limit";
export declare type IDealSubscriptionDataOptions = IDealSubscriptionDataOption | IDealSubscriptionDataOption[];
declare type IDealSubscriptionDataOption = "partner";
export declare type DealType = "COUPON" | "PRESENT" | "SAVING" | "PAYING" | "LOYALTY" | "CASHBACK" | "DIRECT CASHBACK";
declare type IVoucherListInputDealTypes = DealType | DealType[];
export interface IVoucherListInput {
    user_guid?: string;
    pet_guid?: string;
    child_guid?: string;
    show?: "basic" | "extended";
    from?: string;
    to?: string;
    redeemed_from?: string;
    redeemed_to?: string;
    barcode?: string;
    external_tracking_ref?: string;
    partner_extid?: string;
    deal_ref?: string;
    deal_types?: IVoucherListInputDealTypes;
    redemption_request_status?: string;
    deal_data_options?: IDealDataOptions;
    data_options?: IDealSubscriptionDataOptions;
    coupon_id?: string;
    status?: "INVITED" | "SUBSCRIBED" | "REDEEMED";
    inv_resend_count?: string;
    sort_field?: string;
    sort_order?: string;
    q?: string;
    p_length?: number;
    p_page?: number;
    default_lang?: string;
}
export interface IVoucher {
    user_guid: string;
    pet_guid: string | null;
    child_guid: string | null;
    ts_created: string;
    subs_ts_subscribe: string | null;
    external_tracking_reference: string | null;
    barcode: string;
    subs_partner_id: number;
    coupon_id: number;
    status: string;
    deal_ref: string;
    ts_redeemed: string | null;
    restriction_code: string | null;
    redeem_validity_from: string | null;
    redeem_validity_to: string | null;
    product: string;
    num_invi_resend: number;
    ts_last_send: string;
    invt_link: string;
    partner: {
        name: string;
        street1: string;
        street2: string;
        streetnum: string;
        postal_code: string;
        city: string;
        region: string;
        country: string;
        id: string;
        extid: string;
        type: string;
        lat: string;
        lng: string;
        pub_name: string;
        pub_street1: string;
        pub_street2: string;
        pub_streetnum: string;
        pub_postal_code: string;
        pub_city: string;
        pub_region: string;
        pub_country: string;
        distance: string;
        ptn_status: string;
    };
    child?: {
        child_birthday: string;
        child_added_on: string;
        child_updated_on: string;
        child_gender: string;
        child_guid: string;
        child_first_name: string;
        child_parent: string;
        child_status: string;
        child_ext_id: string;
    };
    deal?: IDeal;
}
export interface IVoucherDetail {
    id: string;
    user_guid: string;
    barcode: string;
    status: string;
    pet_guid: string;
    ts_redeemed: string;
    active_redemption_request_status: string;
    ts_subscribed: string;
    redeem_validity_from: string;
    redeem_validity_to: string;
    deal: IDeal;
    ts_created: string;
    secure_code?: string;
    subs_partner_id?: string;
    coupon_id: number;
    is_in_redeemable_status: 0 | 1;
    is_redeemed: boolean;
    pet_status: string;
    redeem_partner_id?: string;
    redeem_partner: string[];
    barcode_url?: string;
    product_id: string;
    benefit: IVoucherBenefit;
}
export interface IVoucherBenefit {
    product_id?: string;
    amount?: string;
    currency?: string;
}
export interface IVoucherDetailInput {
    barcode: string;
    coupon_id?: string;
    deal_data_options?: IDealDataOptions;
    data_options?: IDealSubscriptionDataOptions;
}
export interface IGetVisiblePartnerInput {
    deal_ref: string;
    user_guid: string;
    search?: string;
    favorite_only?: boolean;
    partner_lat?: string;
    partner_lng?: string;
    radius?: string;
    p_page?: number;
    p_length?: number;
    limit?: number;
}
export declare type IRegisteredPartnerDataOptions = IRegisteredPartnerDataOption | IRegisteredPartnerDataOption[];
declare type IRegisteredPartnerDataOption = "public_info" | "location" | "groups" | "logo";
export interface IGetRegisteredPartnerInput {
    deal_ref: string;
    search_term?: string;
    partner_lat?: string;
    partner_lng?: string;
    radius?: string;
    p_page: number;
    p_length?: number;
    partner_type?: string;
    partner_status?: string;
    partner_group?: string;
    partner_mode?: "subscription" | "redemption" | "referral";
    data_options?: IRegisteredPartnerDataOptions;
}
export interface IDealPartner {
    name: string;
    street1?: string;
    street2?: string;
    streetnum?: string;
    postal_code?: string;
    city?: string;
    region?: string;
    country?: string;
    id: string;
    extid: string;
    type: string;
    lat?: string;
    lng?: string;
    pub_name?: string;
    pub_street1?: string;
    pub_street2?: string;
    pub_streetnum?: string;
    pub_postal_code?: string;
    pub_city?: string;
    pub_region?: string;
    pub_country?: string;
    distance?: string;
    ptn_status?: string;
    groups?: string[];
    has_logo?: 0 | 1;
    logo?: string | null;
    logo_small?: string | null;
    logo_medium?: string | null;
    logo_large?: string | null;
}
export declare type ISecureCodeDataOptions = ISecureCodeDataOption | ISecureCodeDataOption[];
declare type ISecureCodeDataOption = "subscription" | "deals" | "referral_partner" | "expiration_date";
interface IReferralPartner {
    id: string;
    ref_name: string;
    extid: string;
    street1: string;
    street2: string;
    streetnum: string;
    postal_code: string;
    city: string;
    country: string;
    status: string;
}
export interface IRedeemVoucherInput {
    barcode?: string;
    secure_code?: string;
    user_guid?: string;
    pet_guid?: string;
    child_guid?: string;
    external_tracking_ref?: string;
    iban?: string;
    bic?: string;
    delivery_address_id?: string;
    ean_code?: string;
    ref?: string;
    shop_id?: string;
    type?: "terminal" | "extid";
    referral_code?: string;
    referral_code_type?: string;
}
export interface IRedeemVoucherResult {
    data: {
        user_guid: string;
        ts_created: string;
        barcode: string;
        subs_partner_id: number;
        coupon_id: number;
        status: string;
        deal_voucher: IVoucher;
        subscription_status_code: number;
        feedback_msg: string;
    };
    status: string;
}
export default class Deals extends Api {
    defaultHost: string;
    errorMap: {
        1005: {
            message: string;
        };
        1006: {
            message: string;
        };
        1008: {
            message: string;
        };
        1009: {
            message: string;
        };
        1010: {
            message: string;
        };
        1024: {
            message: string;
        };
        2001: {
            message: string;
        };
        2002: {
            message: string;
        };
        2003: {
            message: string;
        };
        2006: {
            message: string;
        };
        2008: {
            message: string;
        };
        2021: {
            message: string;
        };
        3020: {
            message: string;
        };
        3022: {
            message: string;
        };
        3023: {
            message: string;
        };
        3026: {
            message: string;
        };
        3031: {
            message: string;
        };
        3033: {
            message: string;
        };
        3035: {
            message: string;
        };
        3044: {
            message: string;
        };
        3059: {
            message: string;
        };
        3051: {
            message: string;
        };
        3034: {
            message: string;
        };
        1019: {
            message: string;
        };
        3055: {
            message: string;
        };
        3027: {
            message: string;
        };
        3028: {
            message: string;
        };
        3029: {
            message: string;
        };
        3045: {
            message: string;
        };
        3049: {
            message: string;
        };
        3030: {
            message: string;
        };
        3056: {
            message: string;
        };
        3052: {
            message: string;
        };
        3053: {
            message: string;
        };
        3054: {
            message: string;
        };
        3057: {
            message: string;
        };
        3058: {
            message: string;
        };
        3060: {
            message: string;
        };
        3061: {
            message: string;
        };
        3063: {
            message: string;
        };
        3064: {
            message: string;
        };
        3069: {
            message: string;
        };
        3086: {
            message: string;
        };
        3087: {
            message: string;
        };
        3088: {
            message: string;
        };
        3091: {
            message: string;
        };
        3092: {
            message: string;
        };
        3093: {
            message: string;
        };
        3097: {
            message: string;
        };
        3098: {
            message: string;
        };
        3108: {
            message: string;
        };
        3109: {
            message: string;
        };
        3110: {
            message: string;
        };
        3111: {
            message: string;
        };
        3112: {
            message: string;
        };
        3113: {
            message: string;
        };
        3144: {
            message: string;
        };
        5000: {
            message: string;
        };
        1023: {
            message: string;
        };
        1025: {
            message: string;
        };
        1027: {
            message: string;
        };
        1029: {
            message: string;
        };
        1030: {
            message: string;
        };
        1032: {
            message: string;
        };
        1035: {
            message: string;
        };
        1036: {
            message: string;
        };
        1037: {
            message: string;
        };
        1038: {
            message: string;
        };
        1039: {
            message: string;
        };
        1040: {
            message: string;
        };
        1042: {
            message: string;
        };
        1047: {
            message: string;
        };
        1046: {
            message: string;
        };
        1048: {
            message: string;
        };
        1049: {
            message: string;
        };
        1050: {
            message: string;
        };
        1051: {
            message: string;
        };
        1052: {
            message: string;
        };
        1053: {
            message: string;
        };
        3025: {
            message: string;
        };
        3050: {
            message: string;
        };
        3062: {
            message: string;
        };
        3124: {
            message: string;
        };
        3048: {
            message: string;
        };
        3094: {
            message: string;
        };
        3096: {
            message: string;
        };
        3115: {
            message: string;
        };
        3119: {
            message: string;
        };
        3118: {
            message: string;
        };
        3120: {
            message: string;
        };
        3121: {
            message: string;
        };
        3122: {
            message: string;
        };
        3127: {
            message: string;
        };
        3128: {
            message: string;
        };
        3131: {
            message: string;
        };
        3132: {
            message: string;
        };
        3133: {
            message: string;
        };
        3134: {
            message: string;
        };
        3135: {
            message: string;
        };
        3116: {
            message: string;
        };
        3123: {
            message: string;
        };
    };
    getDealsList(data: IGetDealsListInput): Promise<{
        data: IDealListItem[];
        status: string;
    }>;
    getDeal({ data_options, ...data }: {
        ref: string;
        default_lang: string;
        data_options?: IDealDataOptions;
    }): Promise<{
        data: IDeal;
    }>;
    getRegisteredPartners({ data_options, ...data }: IGetRegisteredPartnerInput): Promise<{
        data: IDealPartner[];
    } & IPageInfo>;
    getVisiblePartner(data: IGetVisiblePartnerInput): Promise<{
        data: IDealPartner[];
    } & IPageInfo>;
    checkPartnerValidity(data: {
        deal_ref: string;
        partner_extid: string;
    }): Promise<{
        data: {
            is_valid: boolean;
        };
    }>;
    checkDealValidity(data: {
        user_guid: string;
        deal_ref: string;
    } | {
        user_guid: string;
        pet_guid: string;
        deal_ref: string;
    } | {
        user_guid: string;
        child_guid: string;
        deal_ref: string;
    }): Promise<any>;
    subscribeToDeal(data: ISubscribeToDealInput): Promise<{
        data: ISubscribeToDealReturn;
    }>;
    listVouchers(data: IVoucherListInput): Promise<{
        data: IVoucher[];
        status: string;
    } & IPageInfo>;
    redeemVoucher(data: IRedeemVoucherInput): Promise<IRedeemVoucherResult>;
    getVoucherDetail(data: IVoucherDetailInput): Promise<{
        data: IVoucherDetail;
    }>;
    listEligiblePets(data: {
        deal_ref: string;
        user_guid: string;
    }): Promise<{
        data: IDealEligiblePet[];
    }>;
    getProductList(data: {
        deal_ref: string;
    }): Promise<{
        data: IDealProduct[];
    }>;
    checkSecureCode({ data_options, ...data }: {
        deal_ref?: string;
        code: string;
        data_options?: ISecureCodeDataOptions;
    }): Promise<{
        data: {
            is_available: boolean;
            deals: string[];
            referral_partner?: IReferralPartner;
        };
    }>;
    getSecureCode(data: {
        deal_ref?: string;
    }): Promise<{
        data: {
            code: string;
        };
    }>;
    updateSecureCodeProperties(data: IUpdateSecureCodePropertiesInput): Promise<{
        successCode: number;
    }>;
    listEligibleDirectCashbackDeals(data: {
        user_guid: string;
        pet_guid?: string;
        child_guid?: string;
    }): Promise<{
        data: IUserEligibleDirectCashbackDeal[];
    }>;
    listDirectCashbackEligiblePets(data: {
        deal_ref: string;
        user_guid: string;
    }): Promise<{
        data: IUserDirectCashbackDealEligiblePet[];
    }>;
    getDirectCashbackDealDetail(data: IDirectCashbackDealDetailInput): Promise<{
        data: IDirectCashbackDealDetail;
    }>;
    getDirectCashbackVoucherList(data: IDirectCashbackVoucherListInput): Promise<{
        data: IDirectCashbackVoucherList;
    }>;
    getDirectCashbackVoucherDetail({ deal_data_options, ...data }: {
        barcode: string;
        deal_data_options?: IDirectCashbackDealDataOptions;
    }): Promise<{
        data: IDirectCashbackVoucherDetail;
    }>;
    getDirectCashbackDealBenefit(data: {
        product_ean: string;
        deal_ref: string;
    }): Promise<{
        data: IDirectCashbackDealBenefit;
    }>;
    subscribeToDirectCashbackDeal(data: ISubscribeToDirectCashbackDealInput): Promise<{
        barcode: string;
        status: number;
    }>;
    createDirectCashbackRedemptionRequest(data: IDirectCashbackRedemptionRequestInput): Promise<{
        data: {
            presigned_url: string;
            tier_purchase_image_presigned_url?: string;
        };
    }>;
    createDirectCashbackRedemption(data: IDirectCashbackRedemptionInput): Promise<{
        statusCode: string;
    }>;
    getDirectCashbackRedemptionRequestList(data: IDirectCashbackRedemptionRequestListInput): Promise<{
        data: IDirectCashbackRedemptionRequestList;
    }>;
    getDirectCashbackRedemptionRequestDetail(data: IDirectCashbackRedemptionRequestDetailInput): Promise<{
        data: IDirectCashbackRedemptionRequestDetail;
    }>;
    getDirectCashbackVoucherApprovalHistory(data: {
        barcode: string;
        lang?: string;
        sort_field?: string;
        sort_order?: "DESC" | "ASC";
    }): Promise<{
        data: IDirectCashbackVoucherApprovalHistory;
    }>;
    getVoucherPDF(data: {
        barcode: string;
    }): Promise<{
        url: string;
        status: string;
    }>;
    disableVoucherRedemption(data: {
        barcode: string;
    }): Promise<{}>;
    sendVoucher(data: {
        barcode: string;
        email?: string;
        default_lang?: string;
    }): Promise<{}>;
    redeemWithReceipt(data: IRedeemWithReceiptInput): Promise<{
        data: {
            presigned_url: string;
        };
    }>;
    private _call;
}
export {};
