import { UserResponse, UserSummary, ActivityResponse } from "./types";
import { Base, BinaryBoolean, ExtendedPagination, Success } from "../base";
export declare class Users extends Base {
    /**
     * Get ids and usernames for your site
     * @remarks MINIMUM_API_VERSION=5.0.0
     * @see {@link https://ampache.org/api/api-json-methods#users}
     */
    users(): Promise<{
        user: UserSummary[];
    }>;
    /**
     * This get a user's public information (or current user if username is omitted)
     * @remarks MINIMUM_API_VERSION=380001
     * @param [params.username] UID to find
     * @see {@link https://ampache.org/api/api-json-methods#user}
     */
    user(params?: {
        username?: string;
    }): Promise<UserResponse>;
    /**
     * Create a new user
     * ACCESS REQUIRED: 100 (Admin)
     * @remarks MINIMUM_API_VERSION=400001
     * @param params.username Username
     * @param params.password SHA256 hashed password
     * @param params.email  Email
     * @param [params.fullname] Full Name
     * @param [params.disable] 0, 1
     * @param [params.catalog_filter_group] Catalog filter group, default = 0
     * @see {@link https://ampache.org/api/api-json-methods#user_create}
     */
    userCreate(params: {
        username: string;
        password: string;
        email: string;
        fullname?: string;
        disable?: BinaryBoolean;
        catalog_filter_group?: number;
    }): Promise<Success>;
    /**
     * Register as a new user if allowed.
     * @remarks MINIMUM_API_VERSION=6.0.0
     * @param params.username Username
     * @param params.password SHA256 hashed password
     * @param params.email  Email
     * @param [params.fullname] Full Name
     * @see {@link https://ampache.org/api/api-json-methods/#register}
     */
    register(params: {
        username: string;
        password: string;
        email: string;
        fullname?: string;
    }): Promise<Success>;
    /**
     * Update an existing user
     * ACCESS REQUIRED: 100 (Admin)
     * @remarks MINIMUM_API_VERSION=400001
     * @param  params.username Username
     * @param  [params.password] Password
     * @param  [params.email] Email
     * @param  [params.fullname] Full Name
     * @param  [params.website] Website
     * @param  [params.state] State
     * @param  [params.city] City
     * @param  [params.disable] 0, 1
     * @param  [params.maxbitrate] Max bitrate for transcoding
     * @see {@link https://ampache.org/api/api-json-methods#user_update}
     * @deprecated Being removed in 7.0.0. Use `user_edit` instead.
     */
    userUpdate(params: {
        username: string;
        password?: string;
        email?: string;
        fullname?: string;
        website?: string;
        state?: string;
        city?: string;
        disable?: BinaryBoolean;
        maxbitrate?: string;
    }): Promise<Success>;
    /**
     * Update an existing user
     * ACCESS REQUIRED: 100 (Admin)
     * @remarks MINIMUM_API_VERSION=6.0.0
     * @param  params.username Username
     * @param  [params.password] Password
     * @param  [params.email] Email
     * @param  [params.fullname] Full Name
     * @param  [params.website] Website
     * @param  [params.state] State
     * @param  [params.city] City
     * @param  [params.disable] 0, 1
     * @param  [params.maxbitrate] Max bitrate for transcoding
     * @param  [params.group] Catalog filter group, default = 0
     * @param  [params.fullname_public] show fullname in public display
     * @param  [params.reset_apikey] reset user Api Key
     * @param  [params.reset_streamtoken] reset user Stream Token
     * @param  [params.clear_stats] reset all stats for this user
     * @see {@link https://ampache.org/api/api-json-methods#user_edit}
     */
    userEdit(params: {
        username: string;
        password?: string;
        email?: string;
        fullname?: string;
        website?: string;
        state?: string;
        city?: string;
        maxbitrate?: string;
        group?: number;
        disable?: BinaryBoolean;
        fullname_public?: BinaryBoolean;
        reset_apikey?: BinaryBoolean;
        reset_streamtoken?: BinaryBoolean;
        clear_stats?: BinaryBoolean;
    }): Promise<Success>;
    /**
     * Delete an existing user.
     * ACCESS REQUIRED: 100 (Admin)
     * @remarks MINIMUM_API_VERSION=400001
     * @param params.filter UID of user to delete
     * @see {@link https://ampache.org/api/api-json-methods#user_delete}
     */
    userDelete(params: {
        filter: string;
    }): Promise<Success>;
    /**
     * This gets the followers for the requested username
     * @remarks MINIMUM_API_VERSION=380001
     * @param params.username UID to find
     * @param [params.offset]
     * @param [params.limit]
     * @param [params.cond]
     * @param [params.sort]
     * @see {@link https://ampache.org/api/api-json-methods#followers}
     */
    followers(params: {
        username: string;
    } & ExtendedPagination): Promise<{
        user: UserSummary[];
    }>;
    /**
     * Get a list of people that this user follows
     * @remarks MINIMUM_API_VERSION=380001
     * @see {@link https://ampache.org/api/api-json-methods#following}
     */
    following(params: {
        username: string;
    }): Promise<{
        user: UserSummary[];
    }>;
    /**
     * This will follow/unfollow a user
     * @param params.username Username string to find
     * @see {@link https://ampache.org/api/api-json-methods#toggle_follow}
     */
    toggleFollow(params: {
        username: string;
    }): Promise<Success>;
    /**
     * This get a user timeline
     * @remarks MINIMUM_API_VERSION=380001
     * @param params.username Username to find
     * @param [params.limit] Max results to return
     * @param [params.since] UNIXTIME
     * @see {@link https://ampache.org/api/api-json-methods#timeline}
     */
    timeline(params: {
        username: string;
        limit?: number;
        since?: number;
    }): Promise<{
        activity: ActivityResponse[];
    }>;
    /**
     * This get current user friends timeline
     * @remarks MINIMUM_API_VERSION=380001
     * @param [params.limit] Max results to return
     * @param [params.since] UNIXTIME
     * @see {@link https://ampache.org/api/api-json-methods#friends_timeline}
     */
    friendsTimeline(params?: {
        limit?: number;
        since?: number;
    }): Promise<{
        activity: ActivityResponse[];
    }>;
}
