/**
 * @fileoverview Client for managing users in the Sharetribe Integration API.
 *
 * This privileged API allows querying users, updating profiles, approving accounts,
 * and managing permissions — typically used by admin tools or backend services.
 *
 * @see https://www.sharetribe.com/api-reference/integration.html#users
 */
import type { AxiosResponse } from "axios";
import IntegrationApi from "./index";
import { ExtraParameter, UsersApproveParameter, UsersQueryParameter, UsersResponse, UsersShowParameter, UsersUpdatePermissionsParameter, UsersUpdateProfileParameter } from "../../types";
/**
 * Users API client (privileged)
 */
declare class Users {
    readonly authRequired = true;
    private readonly axios;
    private readonly endpoint;
    private readonly headers;
    constructor(api: IntegrationApi);
    /**
     * Fetch a single user by ID or email
     *
     * @template P
     * @param {P & UsersShowParameter<true>} params - Either `id` or `email` is required
     * @returns {Promise<AxiosResponse<UsersResponse<"show", P>>>}
     *
     * @example
     * const { data } = await sdk.users.show({ id: "user-abc123" });
     * const { data: userByEmail } = await sdk.users.show({ email: "john@example.com" });
     */
    show<P extends UsersShowParameter<true>>(params: P): Promise<AxiosResponse<UsersResponse<"show", P, {
        expand: true;
    }>>>;
    /**
     * Query users with privileged filters
     *
     * @template P
     * @param {P & UsersQueryParameter} params
     * @returns {Promise<AxiosResponse<UsersResponse<"query", P>>>}
     */
    query<P extends UsersQueryParameter>(params: P): Promise<AxiosResponse<UsersResponse<"query", P>>>;
    /**
     * Update a user's profile
     *
     * @template P
     * @template EP
     * @param {P & UsersUpdateProfileParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<UsersResponse<"updateProfile", P, EP>>>}
     */
    updateProfile<P extends UsersUpdateProfileParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<UsersResponse<"updateProfile", P, EP>>>;
    /**
     * Approve a pending user account
     *
     * @template P
     * @template EP
     * @param {P & UsersApproveParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<UsersResponse<"approve", P, EP>>>}
     */
    approve<P extends UsersApproveParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<UsersResponse<"approve", P, EP>>>;
    /**
     * Update a user's permissions
     *
     * @template P
     * @template EP
     * @param {P & UsersUpdatePermissionsParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<UsersResponse<"updatePermissions", P, EP>>>}
     */
    updatePermissions<P extends UsersUpdatePermissionsParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<UsersResponse<"updatePermissions", P, EP>>>;
}
export default Users;
