import { type Safe, type ImageResponse, type Tag, type FilterResponse, type UserResponse, type OembedResponse, type SearchImagesResponse, type SearchTagsResponse, type CommentResponse, type PostResponse, type SearchCommentsResponse, type SearchGalleriesResponse, type SearchPostsResponse } from "./index.js";
interface DerpibooruClientConfig {
    apiKey?: string;
    baseUrl?: string;
}
interface RequestOptions {
    method?: string;
    body?: unknown;
    searchParams?: Record<string, string>;
}
declare class DerpibooruClient {
    #private;
    constructor(config?: DerpibooruClientConfig);
    searchImages(query: string, page?: number, perPage?: number): Promise<Safe<SearchImagesResponse>>;
    getImage(id: number): Promise<Safe<ImageResponse>>;
    getFeaturedImage(): Promise<Safe<ImageResponse>>;
    searchTags(query: string, page?: number): Promise<Safe<SearchTagsResponse>>;
    getTag(tagId: string): Promise<Safe<Tag>>;
    getFilter(id: number): Promise<Safe<FilterResponse>>;
    getSystemFilters(page?: number): Promise<Safe<FilterResponse[]>>;
    getUser(id: number): Promise<Safe<UserResponse>>;
    getOembed(url: string): Promise<Safe<OembedResponse>>;
    uploadImage(params: {
        url: string;
        description?: string;
        tags?: string[];
        source_url?: string;
    }): Promise<Safe<ImageResponse>>;
    reverseImageSearch(url: string, distance?: number): Promise<Safe<SearchImagesResponse>>;
    getUserFilters(page?: number): Promise<Safe<FilterResponse[]>>;
    getComment(id: number): Promise<Safe<CommentResponse>>;
    searchComments(query: string, page?: number): Promise<Safe<SearchCommentsResponse>>;
    searchGalleries(query: string, page?: number): Promise<Safe<SearchGalleriesResponse>>;
    getPost(id: number): Promise<Safe<PostResponse>>;
    searchPosts(query: string, page?: number): Promise<Safe<SearchPostsResponse>>;
}
export { type DerpibooruClientConfig, type RequestOptions, DerpibooruClient };
