import { TiktokAPIResponse } from "./types/downloader/tiktokApi";
import { SSSTikResponse } from "./types/downloader/ssstik";
import { MusicalDownResponse } from "./types/downloader/musicaldown";
import { UserSearchResult } from "./types/search/userSearch";
import { LiveSearchResult } from "./types/search/liveSearch";
import { VideoSearchResult } from "./types/search/videoSearch";
import { TiktokStalkUserResponse } from "./types/get/getProfile";
import { TiktokVideoCommentsResponse } from "./types/get/getComments";
import { TiktokUserPostsResponse } from "./types/get/getUserPosts";
import { TiktokUserFavoriteVideosResponse } from "./types/get/getUserLiked";
type DownloaderVersion = "v1" | "v2" | "v3";
type SearchType = "user" | "live" | "video";
type TiktokDownloaderResponse<T extends DownloaderVersion> = T extends "v1" ? TiktokAPIResponse : T extends "v2" ? SSSTikResponse : T extends "v3" ? MusicalDownResponse : TiktokAPIResponse;
type SearchResult<T extends SearchType> = {
    type: T;
} & (T extends "user" ? UserSearchResult : T extends "live" ? LiveSearchResult : VideoSearchResult);
type TiktokSearchResponse<T extends SearchType> = {
    status: "success" | "error";
    message?: string;
    result?: SearchResult<T>[];
    page?: number;
    totalResults?: number;
};
declare const _default: {
    Downloader: <T extends DownloaderVersion>(url: string, options?: {
        version: DownloaderVersion;
        proxy?: string;
        showOriginalResponse?: boolean;
    }) => Promise<TiktokDownloaderResponse<T>>;
    Search: <T extends SearchType>(keyword: string, options?: {
        type?: T;
        cookie?: string;
        page?: number;
        proxy?: string;
    }) => Promise<TiktokSearchResponse<T>>;
    StalkUser: (username: string, options?: {
        cookie?: string | any[];
        proxy?: string;
    }) => Promise<TiktokStalkUserResponse>;
    GetVideoComments: (url: string, options?: {
        commentLimit?: number;
        proxy?: string;
    }) => Promise<TiktokVideoCommentsResponse>;
    GetUserPosts: (username: string, options?: {
        postLimit?: number;
        proxy?: string;
    }) => Promise<TiktokUserPostsResponse>;
    GetUserLiked: (username: string, options: {
        cookie: string | any[];
        postLimit?: number;
        proxy?: string;
    }) => Promise<TiktokUserFavoriteVideosResponse>;
};
export = _default;
