import { Collection } from '@discordjs/collection';
import Friend from '../structures/friend/Friend';
import SentFriendMessage from '../structures/friend/SentFriendMessage';
import BasePendingFriend from '../structures/friend/BasePendingFriend';
import Base from '../Base';
import type Client from '../Client';
import type OutgoingPendingFriend from '../structures/friend/OutgoingPendingFriend';
import type IncomingPendingFriend from '../structures/friend/IncomingPendingFriend';
declare class FriendManager extends Base {
    /**
     * Friend list
     */
    list: Collection<string, Friend>;
    /**
     * Pending friend requests (incoming or outgoing)
     */
    pendingList: Collection<string, IncomingPendingFriend | OutgoingPendingFriend>;
    constructor(constr: Client);
    resolve(friend: string | Friend): Friend | undefined;
    resolvePending(pendingFriend: string | BasePendingFriend): IncomingPendingFriend | OutgoingPendingFriend | undefined;
    /**
     * Sends a friendship request to a user or accepts an existing request
     * @param friend The id or display name of the user to add
     * @throws {UserNotFoundError} The user wasn't found
     * @throws {DuplicateFriendshipError} The user is already friends with the client
     * @throws {FriendshipRequestAlreadySentError} A friendship request has already been sent to the user
     * @throws {InviterFriendshipsLimitExceededError} The client's friendship limit is reached
     * @throws {InviteeFriendshipsLimitExceededError} The user's friendship limit is reached
     * @throws {InviteeFriendshipSettingsError} The user disabled friend requests
     * @throws {InviteeFriendshipRequestLimitExceededError} The user's incoming friend request limit is reached
     * @throws {EpicgamesAPIError}
     */
    add(friend: string): Promise<void>;
    /**
     * Removes a friend from the client's friend list or declines / aborts a pending friendship request
     * @param friend The id or display name of the friend
     * @throws {FriendNotFoundError} The user does not exist or is not friends with the client
     * @throws {EpicgamesAPIError}
     */
    remove(friend: string): Promise<void>;
    /**
     * Fetches the friends the client shares with a friend
     * @param friend The id or display name of the friend
     * @throws {FriendNotFoundError} The user does not exist or is not friends with the client
     * @throws {EpicgamesAPIError}
     */
    getMutual(friend: string): Promise<Friend[]>;
    /**
     * Checks whether a friend owns a specific offer
     * @param friend The id or display name of the friend
     * @param offerId The offer id
     * @throws {OfferNotFoundError} The offer does not exist or is not in the current storefront catalog
     * @throws {FriendNotFoundError} The user does not exist or is not friends with the client
     * @throws {EpicgamesAPIError}
     */
    checkOfferOwnership(friend: string, offerId: string): Promise<boolean>;
    /**
     * Sends a message to a friend
     * @param friend The id or display name of the friend
     * @param content The message that will be sent
     * @throws {FriendNotFoundError} The user does not exist or is not friends with the client
     * @throws {SendMessageError} The messant could not be sent
     */
    sendMessage(friend: string, content: string): Promise<SentFriendMessage>;
}
export default FriendManager;
