/// <reference types="node" />
import { Readable } from "stream";
import Api, { IApiFetchOptions } from "../../lib/Api";
import { IPartnerAddOpeningHoursInput, IPartnerDeleteOpeningHoursInput, IPartnerDetails, IPartnerLink, IPartnerLinks, IPartnerListItem, IPartnerLocatorInput, IPartnerUpdateInput, IPartnerListItemInput, IPartnerDetailsDataOptions, IPartnerLocatorLocateInput } from "../../partner-types";
export interface IPartnerGroup {
    partner_group_name: string;
    partner_group_handle: string;
    is_availability_group: "0" | "1";
}
export default class Partners 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;
        };
        1007: {
            message: string;
        };
        1008: {
            message: string;
        };
        1025: {
            message: string;
        };
        1032: {
            message: string;
        };
        1036: {
            message: string;
        };
        1040: {
            message: string;
        };
    };
    _call(action: string, data?: {}, options?: IApiFetchOptions): Promise<any>;
    listPartners(data: IPartnerListItemInput): Promise<{
        data: IPartnerListItem[];
        page: string;
        rows: string;
        total_rows: number;
        total_pages: number;
    }>;
    findPartners(data: IPartnerLocatorInput): Promise<{
        data: IPartnerDetails[];
    }>;
    locatePartners({ data_options, ...data }?: IPartnerLocatorLocateInput): Promise<{
        data: IPartnerDetails[];
    }>;
    partnerDetails<T extends Record<string, unknown> = {}>({ partner_ext_id, data_options, ...data }: {
        partner_ext_id: string | readonly string[];
        indexed_result?: string;
        lang?: string;
        data_options?: IPartnerDetailsDataOptions;
    }): Promise<{
        data: IPartnerDetails<T>[];
    }>;
    featuredActivities(data: {
        lang: string;
    }): Promise<any>;
    getLinks(data: {
        partner_ext_id: string;
        type?: string;
    }): Promise<{
        statusCode: number;
        links: IPartnerLinks;
    }>;
    addLink(data: {
        partner_ext_id: string;
        type: string;
        link_data: IPartnerLink["contents"];
    }): Promise<{
        statusCode: number;
        link_id?: number;
        type?: string;
    }>;
    deleteLink(data: {
        partner_ext_id: string;
        type: string;
        link_id: number;
    }): Promise<{
        statusCode: number;
    }>;
    updatePartner(data: IPartnerUpdateInput): Promise<{
        data: IPartnerDetails;
    }>;
    addPartner(data: Required<Pick<IPartnerUpdateInput, "partner_ext_id" | "partner_inv_name" | "partner_pub_name" | "partner_type" | "partner_prim_cnt_language">> & Partial<IPartnerUpdateInput>): Promise<{
        data: IPartnerDetails;
    }>;
    resolvePartnerByTerminalId(data: {
        terminal_id: string;
    }): Promise<{
        data: {
            partner_ext_id: string;
        };
    }>;
    listPartnerGroups(data: {
        partner_group_handle?: string;
        partner_type?: string;
    }): Promise<{
        data: IPartnerGroup[];
    }>;
    addRelation(data: {
        partner_ext_id: string;
        relation_type: string;
        reference: string;
    }): Promise<{
        statusCode: number;
    }>;
    deleteRelation(data: {
        partner_ext_id: string;
        relation_type: string;
        reference: string;
    }): Promise<{
        statusCode: number;
    }>;
    updatePartnerLogo(data: {
        partner_ext_id: string;
        partner_logo: string | Readable | {
            value: Buffer;
            options: {
                filename: string;
            };
        };
    }): Promise<{
        statusCode: number;
    }>;
    getLogoURLs(data: {
        partner_ext_id: string;
    }): Promise<{
        statusCode: number;
        data: {
            partner_logo: string | null;
            partner_logo_small: string | null;
            partner_logo_medium: string | null;
            partner_logo_large: string | null;
        };
    }>;
    addOpeningHours(data: IPartnerAddOpeningHoursInput): Promise<{
        statusCode: number;
    }>;
    deleteOpeningHours(data: IPartnerDeleteOpeningHoursInput): Promise<{
        statusCode: number;
    }>;
    updatePartnerStock(data: {
        partner_ext_id: string;
        product_ean: string;
        stock_level?: number | string;
    }): Promise<{
        statusCode: number;
    }>;
    addMissingStockItem(data: {
        partner_ext_id: string;
        product_ean?: string;
        collection_ref?: string;
        user_guid?: string;
    }): Promise<{
        statusCode: number;
        data?: {
            existing_records: {
                products: string[];
            };
        };
    }>;
    addToGroup(data: {
        partner_ext_id: string;
        partner_group_handle: string;
        email_notify?: true;
    }): Promise<{
        statusCode: number;
    }>;
    removeFromGroup(data: {
        partner_ext_id: string;
        partner_group_handle: string;
    }): Promise<{
        statusCode: number;
    }>;
}
