export declare type Profile = {
    email: string;
    firstName: string;
    lastName: string;
    phone: string;
};
export declare type Address = {
    city: string;
    countryCode: string;
    firstName: string;
    id?: string;
    lastName: string;
    postalCode: string;
    region: string;
    streetAddress: string;
    streetAddressDetails: string;
};
export declare type BillingAddress = {
    city: string;
    countryCode: string;
    firstName: string;
    id: string;
    lastName: string;
    postalCode: string;
    region: string;
    streetAddress: string;
    streetAddressDetails: string;
};
export declare type PaymentMethod = {
    billingAddress: BillingAddress;
    default: boolean;
    expMonth: number;
    expYear: number;
    id: string;
    last4: string;
    network: string;
    type: string;
};
export declare type BoltUser = {
    profile: Profile;
    addresses: Address[];
    paymentMethods: PaymentMethod[];
    hasBoltAccount: boolean;
};
export declare type NewAddressRequest = {
    city: string;
    countryCode: string;
    firstName: string;
    lastName: string;
    postalCode: string;
    region: string;
    streetAddress: string;
    streetAddressDetails: string;
};
export declare type CreateUserAccountRequest = {
    profile: Profile;
    addresses: Address[];
};
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: Address & {
    phone: string;
    email: string;
}) => {
    apartment: string;
    city: string;
    country: string;
    email: string;
    firstName: string;
    lastName: string;
    phoneNumber: string;
    state: string;
    street: string;
    zipCode: string;
};
export declare class ShopperAccountApi {
    private shopperAccountApiUrl;
    constructor(shopperAccountApiUrl: string);
    getBoltUser(authorizationCode: string): Promise<BoltUser>;
    addNewAddress(address: NewAddressRequest): Promise<string>;
    createUserAccount: (createUserAccountRequest: CreateUserAccountRequest) => Promise<CreateUserAccountResponse>;
    validatePhoneNumber: (phoneNumber: string) => Promise<ValidatePhoneNumberResponse>;
}
//# sourceMappingURL=shopper-account-api.d.ts.map