import Api from "../../lib/Api";
import { IPartnerAccountRelationCreateInput, IPartnerAccountRelationDeleteInput, IGetUserPartnerAccountRelationsInput, IUserPartnerAccountRelation } from "../../partner-types";
import { IPartnerDataOptions, IRegisterUserAddressInput, IRegisterUserInput, IUpdateUserAddressInput, IUser, IUserAddress, IUserChild, IUserChildCreateInput, IUserChildUpdateInput, IUserConfirmLegalFormsInput, IUserDataOptions, IUserFavourites, IUserFavouritesAddInput, IUserFavouritesDeleteInput, IUserLegalFormsItems, IUserOwner, IUserPartial, IUserPartnerRelationFromGet, IUserPet, IUserPetBmiEntry, IUserPetBmiEntryAddInput, IUserPetCreateInput, IUserPetDeleteInput, IUserPetPlaceOfPurchase, IUserPetPlaceOfPurchaseDeleteInput, IUserPetPlaceOfPurchaseUpdateInput, IUserPetUpdateInput, IUserPetWeightEntry, IUserPetWeightEntryAddInput, IUserPlaceOfPurchase, IUserPreferences, IUserSegment, IUserUpdateInput, IUserUpdatePlacesOfPurchaseInput, IUserUpdateSubscriptionsInput, IUserPetDataOptions, IUsetPetWithOwner, IUserPetDietRecommendationAddInput, IUserPetDietRecommendationEntry, IUserPetDietRecommendationDeleteInput, IAddUserTagsInput, IDeleteUserTagsInput, ISocialNetwork, ISocialNetworkInput, ISocialNetworkDeleteInput, IAddPetTagsInput, IDeletePetTagsInput } from "../../types";
export interface IUserGetPartnerAccountRelationsResult {
    clientof: IUserPartnerRelationFromGet[];
    partof: IUserPartnerRelationFromGet[];
}
export default class Identity extends Api {
    errorMap: {
        9: {
            message: string;
        };
        19: {
            message: string;
        };
    };
    deleteUser(data: {
        user_guid: string;
        user_context?: string;
    }): Promise<any>;
    updateRecoveredPassword(data: {
        token: string;
        password: string;
    }): Promise<{
        statusCode: number;
        data: {
            user_guid: string;
        };
    }>;
    checkPasswordTokenValidity(data: {
        token: string;
    }): Promise<any>;
    getAccessToken(data: {
        session_token: string;
        ttl: string | number;
    }): Promise<{
        statusCode: 0;
        data: {
            token: string;
        };
    }>;
    deleteAccessToken(data: {
        token: string;
    }): Promise<any>;
    findAccountByPhone(data: {
        mobile_no: string;
        include_loyalty_cards?: boolean;
    }): Promise<IUserPartial>;
    findAccountByEmail(data: {
        email: string;
        include_user_type?: string;
        user_context?: string;
    }): Promise<IUserPartial>;
    findAccountByPublicToken(data: {
        token: string;
    }): Promise<{
        data: {
            user_guid: string;
            user_updated_on: string;
        };
    }>;
    findAccountByPartnerExtId(data: {
        partner_ext_id: string;
    }): Promise<any>;
    recoverPassword(data: {
        uid: string;
        mode?: "link" | "password" | "remoteform";
        url?: string;
        user_context?: string;
    }): Promise<any>;
    recoverPasswordSMS(data: {
        mobile: string;
        message?: string;
    }): Promise<any>;
    register(data: IRegisterUserInput): Promise<{
        data: IUser;
    }>;
    forceActivate(data: {
        user_guid: string;
    }): Promise<any>;
    confirmUserAccount(data: {
        identifier: string;
    }): Promise<any>;
    update(data: IUserUpdateInput, options?: {
        locale?: string;
    }): Promise<{
        data: IUserOwner;
    }>;
    getUserList(data: {
        first_name: string;
        last_name: string;
        email: string;
        postcode: string;
        mobile: string;
        partner_ext_id: string;
        partner_relationship: string;
        page: number;
        records_per_page: number;
    }): Promise<any>;
    retrieveUserSubscriptions(data: {
        user_guid: string;
    }): Promise<{
        data: IUserPreferences;
    }>;
    updateSubscriptions(data: IUserUpdateSubscriptionsInput): Promise<{
        statusCode: number;
        data: IUserPreferences;
    }>;
    retrieveUserPlacesOfPurchase(data: {
        user_guid: string;
    }): Promise<{
        data: null | IUserPlaceOfPurchase[];
    }>;
    updateUserPlacesOfPurchase(data: IUserUpdatePlacesOfPurchaseInput): Promise<any>;
    deleteUserPlacesOfPurchase(data: {
        user_guid: string;
        place_id: string;
    }): Promise<any>;
    listUserAddress(data: {
        user_guid: string;
    }): Promise<{
        data: IUserAddress[];
    }>;
    registerUserAddress(data: IRegisterUserAddressInput): Promise<{
        data: IUserAddress;
    }>;
    updateUserAddress(data: IUpdateUserAddressInput): Promise<{
        data: IUserAddress;
    }>;
    deleteUserAddress(data: {
        user_guid: string;
        address_id: string;
    }): Promise<any>;
    confirmLegalForm(data: IUserConfirmLegalFormsInput): Promise<any>;
    getConfirmedLegalForm(data: {
        user_guid: string;
    }): Promise<{
        data: IUserLegalFormsItems[];
    }>;
    revokeLegalForm(data: {
        legal_form_code: string;
        user_guid: string;
        send_notification?: "1";
    }): Promise<any>;
    authenticate(data: {
        identifier: string;
        password: string;
        data_options?: IUserDataOptions;
        partner_data_options?: string;
        pet_data_options?: IUserPetDataOptions;
        pet_partner_type?: string;
        related_partners_filter_relation?: "clientof" | "partof";
        related_partners_filter_types?: string;
        related_partners_filter_groups?: string;
        related_partners_filter_roles?: string;
        user_context?: string;
    }, options?: {
        locale?: string;
    }): Promise<IUser>;
    authenticateByGUID(data: {
        user_guid: string;
        data_options?: IUserDataOptions;
    }): Promise<IUser>;
    authenticateBySessionToken(data: {
        session_token: string;
        data_options?: IUserDataOptions;
    }): Promise<any>;
    authenticateByAccessToken({ data_options, ...data }: {
        access_token: string;
        data_options?: IUserDataOptions;
        partner_data_options?: IPartnerDataOptions;
        pet_data_options?: IUserPetDataOptions;
        pet_partner_type?: string;
        related_partners_filter_relation?: "clientof" | "partof";
        related_partners_filter_types?: string;
        related_partners_filter_groups?: string;
        related_partners_filter_roles?: string;
        user_context?: string;
    }): Promise<IUser>;
    authenticateByEmail(data: {
        email: string;
        data_options?: IUserDataOptions;
    }): Promise<IUser>;
    authenticateByExternalId({ data_options, partner_data_options, pet_data_options, ...data }: {
        user_ext_id: string;
        data_options?: IUserDataOptions;
        pet_data_options?: IUserPetDataOptions;
        partner_data_options?: IPartnerDataOptions;
        pet_partner_type?: string;
        related_partners_filter_xxxx?: string;
    }): Promise<IUser>;
    createAuthCode(data: {
        type: "email" | "mobile";
        value: string;
        ttl: number;
    }): Promise<any>;
    authenticateByCode(data: {
        auth_code: string;
        data_options?: IUserDataOptions;
    }): Promise<IUser>;
    getPartnerAccountRelations(data: {
        user_guid: string;
        partner_relationship?: "clientof" | "partof";
        partner_relationship_role?: string;
        partner_groups?: string | string[];
        show_not_accepted?: string;
        data_options?: IPartnerDataOptions;
        page?: string | number;
        records_per_page?: string | number;
    }): Promise<{
        data: IUserGetPartnerAccountRelationsResult;
    }>;
    createPartnerAccountRelation(data: IPartnerAccountRelationCreateInput): Promise<any>;
    updatePartnerAccountRelation(data: IPartnerAccountRelationCreateInput): Promise<any>;
    deletePartnerAccountRelation(data: IPartnerAccountRelationDeleteInput): Promise<any>;
    getUserPartnerAccountRelations(data: IGetUserPartnerAccountRelationsInput): Promise<{
        data: {
            records: {
                accepted: IUserPartnerAccountRelation[];
            };
            page: string;
            records_per_page: string;
            total_record_count: string;
            total_pages: number;
            recordsPerPage: string;
            totalRecordCount: string;
            totalPages: number;
        } | null;
    }>;
    getPets(data: {
        user_guid: string;
        data_options?: IUserPetDataOptions;
    }, options?: {
        locale?: string;
    }): Promise<{
        data: IUserPet[];
    }>;
    getPet(data: {
        pet_guid: string;
        data_options?: IUserPetDataOptions;
    }): Promise<{
        data: IUsetPetWithOwner;
    }>;
    getPetByExternalId(data: {
        pet_ext_id: string;
        data_options?: IUserPetDataOptions;
    }): Promise<{
        data: IUsetPetWithOwner;
        statusCode: number;
    }>;
    createPet(data: IUserPetCreateInput): Promise<{
        data: IUserPet;
    }>;
    deletePet(data: IUserPetDeleteInput): Promise<any>;
    getPetDeletionCauses(data: {
        lang?: string;
    }): Promise<any>;
    updatePet(data: IUserPetUpdateInput): Promise<{
        data: IUserPet;
    }>;
    getPetPictureUrl(data: {
        pet_guid: string;
        w?: number;
        h?: number;
    }): string;
    updatePetPicture(data: {
        pet_guid: string;
        pet_picture: IUserPetUpdateInput["pet_picture"];
    }): Promise<{
        statusCode: number;
    }>;
    updatePetPlaceOfPurchase(data: IUserPetPlaceOfPurchaseUpdateInput): Promise<{
        statusCode: number;
    }>;
    retrievePetPlaceOfPurchase(data: {
        pet_guid: string;
    }): Promise<{
        data: IUserPetPlaceOfPurchase[] | null;
    }>;
    deletePetPlaceOfPurchase(data: IUserPetPlaceOfPurchaseDeleteInput): Promise<{
        statusCode: number;
        data: any;
    }>;
    addPetWeight(data: IUserPetWeightEntryAddInput): Promise<any>;
    getPetWeight(data: {
        pet_guid: string;
        partner_ext_id?: string;
    }): Promise<{
        statusCode: number;
        data: IUserPetWeightEntry[];
    }>;
    deletePetWeight(data: Pick<IUserPetWeightEntryAddInput, "date" | "pet_guid" | "partner_ext_id">): Promise<any>;
    addPetBmi(data: IUserPetBmiEntryAddInput): Promise<any>;
    getPetBmi(data: {
        pet_guid: string;
        partner_ext_id?: string;
    }): Promise<{
        statusCode: number;
        data: IUserPetBmiEntry[];
    }>;
    deletePetBmi(data: Pick<IUserPetBmiEntryAddInput, "date" | "pet_guid" | "partner_ext_id">): Promise<any>;
    addPetDietRecommendation(data: IUserPetDietRecommendationAddInput): Promise<any>;
    getPetDietRecommendation(data: {
        pet_guid: string;
        creation_date?: string;
        partner_ext_id?: string;
    }): Promise<{
        data: IUserPetDietRecommendationEntry[];
    }>;
    deletePetDietRecommendation(data: IUserPetDietRecommendationDeleteInput): Promise<any>;
    addPetTags(data: IAddPetTagsInput): Promise<any>;
    deletePetTags(data: IDeletePetTagsInput): Promise<any>;
    createChild(data: IUserChildCreateInput, options?: {
        locale?: string;
    }): Promise<{
        data: IUserChild;
    }>;
    getChildren(data: {
        user_guid: string;
    }): Promise<{
        data: IUserChild[];
    }>;
    updateChild(data: IUserChildUpdateInput, options?: {
        locale?: string;
    }): Promise<{
        data: IUserChild;
    }>;
    getUserSegments(data: {
        user_guid: string;
    }): Promise<{
        data: IUserSegment[];
    }>;
    flushUserSegmentCache(data: {
        user_guid: string;
    }): Promise<{
        data: {
            statusCode: number;
        };
    }>;
    addUserFavourites(data: IUserFavouritesAddInput): Promise<{
        statusCode: number;
    }>;
    getUserFavourites(data: {
        user_guid: string;
        type?: string;
        source?: string;
    }): Promise<{
        data: IUserFavourites[];
    }>;
    deleteUserFavourites(data: IUserFavouritesDeleteInput): Promise<{
        statusCode: number;
    }>;
    getFormatPassword(data?: {
        user_guid?: string;
        user_email?: string;
        user_username?: string;
    }): Promise<{
        data: {
            password_format: string | null;
            alt_password_format: string | null;
        };
    }>;
    getUserTags(data: {
        user_guid: string;
    }): Promise<{
        data: string[];
    }>;
    addUserTags(data: IAddUserTagsInput): Promise<{
        data: {
            added_tags: string[];
        };
    }>;
    deleteUserTags(data: IDeleteUserTagsInput): Promise<{
        data: {
            statusCode: number;
        };
    }>;
    getUserSocialNetwork(data: {
        user_guid: string;
    }): Promise<{
        data: ISocialNetwork[];
    }>;
    addUserSocialNetwork(data: ISocialNetworkInput): Promise<{
        data: {
            statusCode: 0;
        };
    }>;
    updateUserSocialNetwork(data: ISocialNetworkInput): Promise<{
        data: {
            statusCode: 0;
        };
    }>;
    deleteUserSocialNetwork(data: ISocialNetworkDeleteInput): Promise<{
        data: {
            statusCode: 0;
        };
    }>;
}
