import type { Channel, GuildMember, User } from "discord-types/general"; interface PendingRoleUpdate { added: Record; removed: Record; } interface Cache { initialGuildChannels: Channel[]; privateChannels: Channel[]; users?: User[]; } interface Snapshot { data: { users: User[]; }; version: number; } export interface UserStore { filter: (callback: (user: User) => User | boolean, sort?: boolean) => User[]; findByTag: (username: string, discriminator?: string) => User | undefined; forEach: (callback: (user: User) => void) => void; getCurrentUser: () => User; getUser: (userId: string) => User | undefined; getUsers: () => Record; getUserStoreVersion: () => number; handleLoadCache: (cache: Cache) => void; takeSnapshot: () => Snapshot; } export interface GuildMemberStore { getCachedSelfMember: (guildId: string) => GuildMember | null; getCommunicationDisabledUserMap: () => Record; getCommunicationDisabledVersion: () => number; getMember: (guildId: string, userId: string) => GuildMember | null; getMemberIds: (guildId?: string) => string[]; getMemberRoleWithPendingUpdates: (guildId: string, userId: string) => string[]; getMembers: (guildId?: string) => GuildMember[]; getMemberVersion: () => number; getMutableAllGuildsAndMembers: () => Record>; getNick: (guildId?: string, userId?: string) => string | null; getNicknameGuildsMapping: (userId: string) => Record; getNicknames: (userId: string) => string[]; getPendingRoleUpdates: (guildId: string) => PendingRoleUpdate; getSelfMember: (guildId: string) => GuildMember | null; getTrueMember: (guildId: string, userId: string) => GuildMember | null; isCurrentUserGuest: (guildId?: string) => boolean; isGuestOrLurker: (guildId?: string, userId?: string) => boolean; isMember: (guildId?: string, userId?: string) => boolean; memberOf: (userId: string) => string[]; } export type Users = UserStore & GuildMemberStore; declare const _default: Users; export default _default;