/**
 * @fileoverview Client for managing the current authenticated user in the Sharetribe Marketplace API.
 *
 * This API allows users to view their profile, update personal info, change password/email,
 * verify email, and manage account lifecycle (signup, delete).
 *
 * @see https://www.sharetribe.com/api-reference/marketplace.html#current-user
 */
import type { AxiosResponse } from "axios";
import MarketplaceApi from "./index";
import { CurrentUserChangeEmailParameter, CurrentUserChangePasswordParameter, CurrentUserCreateParameter, CurrentUserCreateWithIdpParameter, CurrentUserDeleteParameter, CurrentUserResponse, CurrentUserSendVerificationEmailParameter, CurrentUserShowParameter, CurrentUserUpdateProfileParameter, CurrentUserVerifyEmailParameter, ExtraParameter } from "../../types";
/**
 * Current User API client
 */
declare class CurrentUser {
    readonly authRequired = true;
    private readonly axios;
    private readonly endpoint;
    private readonly headers;
    constructor(api: MarketplaceApi);
    /**
     * Fetch current user profile
     *
     * @template P
     * @param {P & CurrentUserShowParameter} params
     * @returns {Promise<AxiosResponse<CurrentUserResponse<"show", P>>>}
     */
    show<P extends CurrentUserShowParameter>(params?: P): Promise<AxiosResponse<CurrentUserResponse<"show", P, {
        expand: true;
    }>>>;
    /**
     * Create a new user account (signup)
     *
     * @template P
     * @template EP
     * @param {P & CurrentUserCreateParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<CurrentUserResponse<"create", P, EP>>>}
     */
    create<P extends CurrentUserCreateParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<CurrentUserResponse<"create", P, EP>>>;
    /**
     * Create account via external identity provider (Google, Facebook, etc.)
     *
     * @template P
     * @template EP
     * @param {P & CurrentUserCreateWithIdpParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<CurrentUserResponse<"create_with_idp", P, EP>>>}
     */
    createWithIdp<P extends CurrentUserCreateWithIdpParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<CurrentUserResponse<"create_with_idp", P, EP>>>;
    /**
     * Update current user profile
     *
     * @template P
     * @template EP
     * @param {P & CurrentUserUpdateProfileParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<CurrentUserResponse<"update_profile", P, EP>>>}
     */
    updateProfile<P extends CurrentUserUpdateProfileParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<CurrentUserResponse<"update_profile", P, EP>>>;
    /**
     * Change password
     *
     * @template P
     * @template EP
     * @param {P & CurrentUserChangePasswordParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<CurrentUserResponse<"change_password", P, EP>>>}
     */
    changePassword<P extends CurrentUserChangePasswordParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<CurrentUserResponse<"change_password", P, EP>>>;
    /**
     * Change email address
     *
     * @template P
     * @template EP
     * @param {P & CurrentUserChangeEmailParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<CurrentUserResponse<"change_email", P, EP>>>}
     */
    changeEmail<P extends CurrentUserChangeEmailParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<CurrentUserResponse<"change_email", P, EP>>>;
    /**
     * Verify email using token from email link
     *
     * @template P
     * @template EP
     * @param {P & CurrentUserVerifyEmailParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<CurrentUserResponse<"verify_email", P, EP>>>}
     */
    verifyEmail<P extends CurrentUserVerifyEmailParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<CurrentUserResponse<"verify_email", P, EP>>>;
    /**
     * Resend email verification
     *
     * @returns {Promise<AxiosResponse<CurrentUserResponse<"send_verification_email">>>}
     */
    sendVerificationEmail<P extends CurrentUserSendVerificationEmailParameter>(): Promise<AxiosResponse<CurrentUserResponse<"send_verification_email", P>>>;
    /**
     * Delete current user account
     *
     * @returns {Promise<AxiosResponse<CurrentUserResponse<"delete">>>}
     */
    delete<P extends CurrentUserDeleteParameter>(): Promise<AxiosResponse<CurrentUserResponse<"delete", P>>>;
    /**
     * @deprecated Use `sdk.stripeAccount.create()` instead
     */
    createStripeAccount(): never;
    /**
     * @deprecated Use `sdk.stripeAccount.update()` instead
     */
    updateStripeAccount(): never;
}
export default CurrentUser;
