import FormData from 'form-data';
import { Client } from '../../Client';
import { ContentManagementMember, ContentManagementMemberRequest, MemberResetPasswordToken } from '../../Responses';
/**
 * MemberManagementClient is used to access the Member part of the Content Management API.
 * @public
 *
 * @example
 * The {@link MemberManagementClient} must be accessed through {@link Client}.
 *
 * ```typescript
 * import { Client } from '@umbraco/headless-client'
 *
 * const client = new Client({
 *  projectAlias: '<your-project-alias>',
 *  apiKey: '<your-api-key>',
 *  language: '<iso-code>',
 * })
 *
 * const memberClient = client.management.member
 * ```
 */
export declare class MemberManagementClient {
    private readonly client;
    /**
     * @internal
     */
    constructor(client: Client);
    private readonly makeRequest;
    /**
     * Find member by membername.
     * @param username - Username for the member querying for.
     * @returns a `Promise` that resolves to a {@link ContentManagementMember} if found, otherwise `undefined`.
     */
    byUsername<R extends ContentManagementMember>(username: string): Promise<R | undefined>;
    /**
     * Create a new member.
     * @param data - Data for creating a new member.
     * @returns a `Promise` that resolves to the newly created {@link ContentManagementMember}.
     */
    create<R extends ContentManagementMember>(data: ContentManagementMemberRequest | FormData): Promise<R>;
    /**
     * Update member by username.
     * @param username - Username for the member to be updated.
     * @param data - Data for the member to be updated.
     * @returns a `Promise` that resolves to a {@link ContentManagementMember} of the updated Member item if found, otherwise `undefined`.
     */
    update<R extends ContentManagementMember>(username: string, data: ContentManagementMemberRequest | FormData): Promise<R | undefined>;
    /**
     * Add member to group.
     * @deprecated Use {@link MemberManagementClient.addToGroup | addToGroup()} instead.
     * @param username - Username of the member.
     * @param group - Name of the group the member should be added to.
     */
    addGroup(username: string, group: string): Promise<void>;
    /**
     * Add member to group.
     * @param username - Username of the member.
     * @param group - Name of the group the member should be added to.
     */
    addToGroup(username: string, groupName: string): Promise<undefined>;
    /**
     * Remove member from group.
     * @deprecated Use {@link MemberManagementClient.removeFromGroup | removeFromGroup()} instead.
     * @param username - Username of the member.
     * @param group - Name of the group the member should be removed from.
     */
    removeGroup(username: string, group: string): Promise<void>;
    /**
     * Remove member from group.
     * @param username - Username of the member.
     * @param group - Name of the group the member should be removed from.
     */
    removeFromGroup(username: string, groupName: string): Promise<undefined>;
    /**
     * Delete a member.
     * @param username - Username for the member that needs to be deleted.
     */
    delete(username: string): Promise<any>;
    /**
     * Change a members password.
     * @param username - Username for the member.
     * @param currentPassword - The current password.
     * @param newPassword - The new password.
     * @returns a `Promise` that resolves to a {@link ContentManagementMember} if found and password is updated, otherwise `undefined`.
     */
    changePassword(username: string, currentPassword: string, newPassword: string): Promise<any>;
    /**
     * Create a reset tokon that can be used to reset the members password.
     * @param username - Username for the member.
     * @returns a `Promise` that resolves to a {@link MemberResetPasswordToken} if found, otherwise `undefined`.
     */
    createResetPasswordToken<R extends MemberResetPasswordToken>(username: string): Promise<R | undefined>;
    /**
     * Resets the members password using a reset token obtained via. {@link MemberManagementClient.createResetPasswordToken | createResetPasswordToken()}.
     * @param username - Username for the member.
     * @param token - The password reset token.
     * @param newPassword - The new password.
     * @returns a `Promise` that resolves to a {@link ContentManagementMember} if found and password is updated, otherwise `undefined`.
     */
    resetPassword<R extends ContentManagementMember>(username: string, token: string, newPassword: string): Promise<R | undefined>;
}
