import { CountryCode } from '../common/market-metadata';
import { CheckoutDeliveryAddressData } from '../components/modular-checkout/types';
export declare type Profile = {
    email: string;
    firstName: string;
    lastName: string;
    phone: string;
};
export declare type BoltShopperAddress = {
    city: string;
    countryCode: CountryCode;
    firstName: string;
    id?: string;
    lastName: string;
    postalCode: string;
    region: string;
    streetAddress: string;
    streetAddressDetails: string;
};
export declare type NewAddressRequest = {
    city: string;
    countryCode: CountryCode;
    firstName: string;
    lastName: string;
    postalCode: string;
    region: string;
    streetAddress: string;
    streetAddressDetails: string;
};
export declare type PaymentMethod = {
    billingAddress: BoltShopperAddress;
    default: boolean;
    expMonth: number;
    expYear: number;
    id: string;
    last4: string;
    network: string;
    type: string;
};
export declare type BoltUser = {
    profile: Profile;
    addresses: BoltShopperAddress[];
    paymentMethods: PaymentMethod[];
    hasBoltAccount: boolean;
};
export declare type CreateUserAccountRequest = {
    profile: Profile;
    addresses: BoltShopperAddress[];
};
export declare type CreateUserAccountResponse = {
    result: {
        success: boolean;
        errors?: {
            code: number;
            message: string;
        }[];
    };
};
export declare type PhoneNumberStates = 'OK' | 'INVALID_PHONE_NUMBER' | 'INVALID_COUNTRY_CODE' | 'NOT_A_NUMBER' | 'TOO_SHORT_AFTER_IDD' | 'TOO_SHORT_NSN' | 'TOO_LONG';
export declare type ValidatePhoneNumberResponse = {
    validationResult: PhoneNumberStates;
};
export declare const mapBoltUserDataToTipserUserData: (address: BoltShopperAddress & {
    phone: string;
    email: string;
}) => CheckoutDeliveryAddressData;
export declare class ShopperAccountApi {
    private shopperAccountApiUrl;
    constructor(shopperAccountApiUrl: string);
    getBoltUser(authorizationCode: string, pspType: string): Promise<BoltUser>;
    addNewAddress(address: NewAddressRequest, pspType: string): Promise<string>;
    createUserAccount: (createUserAccountRequest: CreateUserAccountRequest, pspType: string) => Promise<CreateUserAccountResponse>;
    validatePhoneNumber: (phoneNumber: string) => Promise<ValidatePhoneNumberResponse>;
}
//# sourceMappingURL=shopper-account-api.d.ts.map