import { Collection } from '@discordjs/collection';
import ClientPartyMeta from './ClientPartyMeta';
import Party from './Party';
import PartyChat from './PartyChat';
import SentPartyInvitation from './SentPartyInvitation';
import type PartyMemberConfirmation from './PartyMemberConfirmation';
import type ClientPartyMember from './ClientPartyMember';
import type Client from '../../Client';
import type { Island, PartyData, PartyPrivacy, PartySchema } from '../../../resources/structs';
/**
 * Represents a party that the client is a member of
 */
declare class ClientParty extends Party {
    /**
     * The party patch queue
     */
    private patchQueue;
    /**
     * The party text chat
     */
    chat: PartyChat;
    /**
     * The party's meta
     */
    meta: ClientPartyMeta;
    /**
     * The hidden member ids
     */
    hiddenMemberIds: Set<string>;
    /**
     * The pending member confirmations
     */
    pendingMemberConfirmations: Collection<string, PartyMemberConfirmation>;
    /**
     * @param client The main client
     * @param data The party's data
     */
    constructor(client: Client, data: PartyData | Party);
    /**
     * Returns the client's party member
     */
    get me(): ClientPartyMember;
    /**
     * Whether the party is private
     */
    get isPrivate(): boolean;
    /**
     * Leaves this party
     * @param createNew Whether a new party should be created
     * @throws {EpicgamesAPIError}
     */
    leave(createNew?: boolean): Promise<void>;
    /**
     * Sends a party patch to Epicgames' servers
     * @param updated The updated schema
     * @param deleted The deleted schema keys
     * @throws {PartyPermissionError} You're not the leader of this party
     * @throws {EpicgamesAPIError}
     */
    sendPatch(updated: PartySchema, deleted?: (keyof PartySchema & string)[]): Promise<void>;
    /**
     * Kicks a member from this party
     * @param member The member that should be kicked
     * @throws {PartyPermissionError} The client is not the leader of the party
     * @throws {PartyMemberNotFoundError} The party member wasn't found
     * @throws {EpicgamesAPIError}
     */
    kick(member: string): Promise<void>;
    /**
     * Sends a party invitation to a friend
     * @param friend The friend that will receive the invitation
     * @throws {FriendNotFoundError} The user is not friends with the client
     * @throws {PartyAlreadyJoinedError} The user is already a member of this party
     * @throws {PartyMaxSizeReachedError} The party reached its max size
     * @throws {EpicgamesAPIError}
     */
    invite(friend: string): Promise<SentPartyInvitation>;
    /**
     * Refreshes the member positions of this party
     * @throws {PartyPermissionError} The client is not the leader of the party
     * @throws {EpicgamesAPIError}
     */
    refreshSquadAssignments(): Promise<void>;
    /**
     * Sends a message to the party chat
     * @param content The message that will be sent
     */
    sendMessage(content: string): Promise<import("./PartyMessage").default>;
    /**
     * Ban a member from this party chat
     * @param member The member that should be banned
     * @deprecated This feature has been deprecated since epic moved chatting away from xmpp
     */
    chatBan(): Promise<void>;
    /**
     * Updates this party's privacy settings
     * @param privacy The updated party privacy
     * @param sendPatch Whether the updated privacy should be sent to epic's servers
     * @throws {PartyPermissionError} The client is not the leader of the party
     * @throws {EpicgamesAPIError}
     */
    setPrivacy(privacy: PartyPrivacy, sendPatch?: boolean): Promise<{
        updated: PartySchema;
        deleted: ("Default:CampaignInfo_j" | "Default:FortCommonMatchmakingData_j" | "Default:FortMatchmakingMemberData_j" | "Default:ActivityName_s" | "Default:ActivityType_s" | "Default:AllowJoinInProgress_b" | "Default:AthenaPrivateMatch_b" | "Default:AthenaSquadFill_b" | "Default:CreativeDiscoverySurfaceRevisions_j" | "Default:CreativePortalCountdownStartTime_s" | "Default:CurrentRegionId_s" | "Default:CustomMatchKey_s" | "Default:GameSessionKey_s" | "Default:LFGTime_s" | "Default:MatchmakingInfoString_s" | "Default:PartyIsJoinedInProgress_b" | "Default:PartyMatchmakingInfo_j" | "Default:PartyState_s" | "Default:PlatformSessions_j" | "Default:PlaylistData_j" | "Default:PrimaryGameSessionId_s" | "Default:PrivacySettings_j" | "Default:SquadInformation_j" | "Default:RegionId_s" | "Default:SelectedIsland_j" | "Default:TileStates_j" | "Default:ZoneInstanceId_s" | "urn:epic:cfg:accepting-members_b" | "urn:epic:cfg:build-id_s" | "urn:epic:cfg:can-join_b" | "urn:epic:cfg:chat-enabled_b" | "urn:epic:cfg:invite-perm_s" | "urn:epic:cfg:join-request-action_s" | "urn:epic:cfg:party-type-id_s" | "urn:epic:cfg:presence-perm_s" | "VoiceChat:implementation_s" | "urn:epic:cfg:not-accepting-members" | "urn:epic:cfg:not-accepting-members-reason_i")[];
    }>;
    /**
     * Sets this party's custom matchmaking key
     * @param key The custom matchmaking key
     * @throws {PartyPermissionError} The client is not the leader of the party
     * @throws {EpicgamesAPIError}
     */
    setCustomMatchmakingKey(key?: string): Promise<void>;
    /**
     * Promotes a party member
     * @param member The member that should be promoted
     * @throws {PartyPermissionError} The client is not the leader of the party
     * @throws {PartyMemberNotFoundError} The party member wasn't found
     * @throws {EpicgamesAPIError}
     */
    promote(member: string): Promise<void>;
    /**
     * Hides / Unhides a single party member
     * @param member The member that should be hidden
     * @param hide Whether the member should be hidden
     * @throws {PartyPermissionError} The client is not the leader of the party
     * @throws {PartyMemberNotFoundError} The party member wasn't found
     * @throws {EpicgamesAPIError}
     */
    hideMember(member: string, hide?: boolean): Promise<void>;
    /**
     * Hides / Unhides all party members except for the client
     * @param hide Whether all members should be hidden
     * @throws {PartyPermissionError} The client is not the leader of the party
     * @throws {EpicgamesAPIError}
     */
    hideMembers(hide?: boolean): Promise<void>;
    /**
     * Updates the party's playlist
     * @param mnemonic The new mnemonic (Playlist id or island code, for example: playlist_defaultduo or 1111-1111-1111)
     * @param regionId The new region id
     * @param version The new version
     * @param options Playlist options
     * @throws {PartyPermissionError} The client is not the leader of the party
     * @throws {EpicgamesAPIError}
     */
    setPlaylist(mnemonic: string, regionId?: string, version?: number, options?: Omit<Island, 'linkId'>): Promise<void>;
    /**
     * Updates the squad fill status of this party
     * @param fill Whether fill is enable or not
     * @throws {PartyPermissionError} The client is not the leader of the party
     * @throws {EpicgamesAPIError}
     */
    setSquadFill(fill?: boolean): Promise<void>;
    /**
     * Updates the party's max member count
     * @param maxSize The new party max size (1-16)
     * @throws {PartyPermissionError} The client is not the leader of the party
     * @throws {RangeError} The new max member size must be between 1 and 16 (inclusive) and more than the current member count
     * @throws {EpicgamesAPIError}
     */
    setMaxSize(maxSize: number): Promise<void>;
}
export default ClientParty;
