import type { KemonoService, Creator, Post } from '../types/api';
import { HttpClient } from '../utils/http-client';
/**
 * Interface for favorite creator with additional favorite-specific fields
 */
export interface FavoriteCreator extends Creator {
    faved_seq: number;
    last_imported: string;
}
/**
 * Interface for favorite post with additional favorite-specific fields
 */
export interface FavoritePost extends Post {
    faved_seq: number;
}
/**
 * Favorites API endpoints
 */
export declare class FavoritesApi {
    private readonly client;
    constructor(client: HttpClient);
    /**
     * List favorite creators
     * @throws {AuthenticationError} If session key is not provided
     * @returns Array of favorite creators
     */
    listCreators(): Promise<FavoriteCreator[]>;
    /**
     * List favorite posts
     * @throws {AuthenticationError} If session key is not provided
     * @returns Array of favorite posts
     */
    listPosts(): Promise<FavoritePost[]>;
    /**
     * Add a creator to favorites
     * @param service Platform service
     * @param creatorId Creator's ID
     * @throws {AuthenticationError} If session key is not provided
     */
    addCreator(service: KemonoService, creatorId: string | number): Promise<void>;
    /**
     * Remove a creator from favorites
     * @param service Platform service
     * @param creatorId Creator's ID
     * @throws {AuthenticationError} If session key is not provided
     */
    removeCreator(service: KemonoService, creatorId: string | number): Promise<void>;
    /**
     * Add a post to favorites
     * @param service Platform service
     * @param creatorId Creator's ID
     * @param postId Post ID
     * @throws {AuthenticationError} If session key is not provided
     */
    addPost(service: KemonoService, creatorId: string | number, postId: string): Promise<void>;
    /**
     * Remove a post from favorites
     * @param service Platform service
     * @param creatorId Creator's ID
     * @param postId Post ID
     * @throws {AuthenticationError} If session key is not provided
     */
    removePost(service: KemonoService, creatorId: string | number, postId: string): Promise<void>;
}
