import { UserState } from '@tf2pickup-org/mumble-protocol';
import { Client } from './client.js';
import { Channel } from './channel.js';
import { Change } from './change.js';
type UserWritableProps = Pick<User, 'name' | 'channelId' | 'mute' | 'deaf' | 'suppress' | 'selfMute' | 'selfDeaf'>;
export type UserChanges = {
    [P in keyof UserWritableProps]?: Change<User[P]>;
};
export declare const MinusOneButUnsigned = 4294967295;
export declare class User {
    private readonly client;
    readonly session: number;
    name?: string;
    channelId: number;
    private _userId;
    mute: boolean;
    deaf: boolean;
    suppress: boolean;
    selfMute: boolean;
    selfDeaf: boolean;
    constructor(client: Client, userState: UserState & {
        session: number;
    });
    get channel(): Channel;
    get userId(): number | undefined;
    set userId(userId: number | undefined);
    get isRegistered(): boolean;
    moveToChannel(channelId: number): Promise<this>;
    setSelfMute(selfMute: boolean): Promise<this>;
    setSelfDeaf(selfDeaf: boolean): Promise<this>;
    register(): Promise<this>;
    deregister(): Promise<this>;
    rename(name: string): Promise<this>;
}
export {};
