import { APIServerMember, APIServerMemberSummary, APISocialLink } from 'guilded-api-typings';
import { Base } from '../Base';
import { Server } from './Server';
import { User } from '../User';
import { ServerMemberRoleManager } from '../../managers/server/ServerMemberRoleManager';
import { FetchOptions } from '../../managers/BaseManager';
import { Collection } from '@discordjs/collection';
/**
 * Represents a server member on Guilded.
 * @example new ServerMember(server, rawMember);
 */
export declare class ServerMember extends Base {
    readonly server: Server;
    readonly raw: APIServerMember | APIServerMemberSummary;
    /** The user the server member belongs to. */
    readonly user: User;
    /** The IDs of roles the server member has. */
    roleIds: number[];
    /** The nickname of the server member. */
    nickname?: string;
    /** The date the member joined the server. */
    readonly joinedAt?: Date;
    /** Whether the server member is the server owner. */
    readonly isOwner?: boolean;
    /** The social links of the server member. */
    readonly socialLinks: Collection<string, APISocialLink>;
    /** The manager of roles that belong to the server member. */
    readonly roles: ServerMemberRoleManager;
    /**
     * @param server The server the member belongs to.
     * @param raw The raw data of the server member.
     * @param cache Whether to cache the server member.
     */
    constructor(server: Server, raw: APIServerMember | APIServerMemberSummary, cache?: boolean);
    /** Whether the server member is cached. */
    get isCached(): boolean;
    /** The timestamp the member joined the server. */
    get joinedTimestamp(): number | undefined;
    /**
     * Fetch the server member.
     * @param options The options to fetch the server member with.
     * @returns The fetched server member.
     * @example member.fetch();
     */
    fetch(options?: FetchOptions): Promise<this>;
    /**
     * Set the nickname of the server member.
     * @param nickname The nickname of the server member.
     * @returns The edited server member.
     * @example member.setNickname('new nickname');
     */
    setNickname(nickname: string): Promise<this>;
    /**
     * Remove the nickname of the server member.
     * @returns The edited server member.
     * @example member.removeNickname();
     */
    removeNickname(): Promise<this>;
    /**
     * Kick the server member.
     * @returns The kicked member.
     * @example member.kick();
     */
    kick(): Promise<this>;
    /**
     * Ban the server member.
     * @param reason The reason of the ban.
     * @returns The created server ban.
     * @example member.ban();
     */
    ban(reason?: string): Promise<import("./ServerBan").ServerBan>;
    /**
     * Unban the server member.
     * @returns The unbanned member.
     * @example member.unban();
     */
    unban(): Promise<this>;
    /**
     * Award XP to the server member.
     * @param amount The amount of XP to award.
     * @returns The total amount of XP the server member has.
     * @example member.awardXp(100);
     */
    awardXp(amount: number): Promise<number>;
    /**
     * Set XP of the server member.
     * @param amount The total XP of the server member.
     * @returns The total amount of XP the server member has.
     * @example member.setXp(100);
     */
    setXp(amount: number): Promise<number>;
    /**
     * Fetch a social link of the server member.
     * @param type The type of social link to fetch.
     * @returns The fetched social link.
     * @example member.fetchSocialLink('youtube');
     */
    fetchSocialLink(type: string): Promise<APISocialLink>;
}
//# sourceMappingURL=ServerMember.d.ts.map