import { Got } from "got";
import { Launcher } from "../../../launcher.js";
import { MinecraftVersion } from "../../../version.js";
import { Content, ContentService, ContentType, ContentVersion, Screenshot } from "../ContentService.js";
import { CurseForgeMod, CurseForgeModFile } from "./CurseForgeModels.js";
export declare const CurseForgeSortField: {
    FEATURED: number;
    POPULARITY: number;
    LAST_UPDATED: number;
    NAME: number;
    AUTHOR: number;
    TOTAL_DOWNLOADS: number;
    CATEGORY: number;
    GAME_VERSION: number;
};
export declare class CurseForgeContentVersion implements ContentVersion {
    private model;
    private got;
    isVersion: true;
    content?: CurseForgeContent;
    constructor(model: CurseForgeModFile, got: Got);
    getContent(): Promise<Content>;
    getVersionFileName(): Promise<string>;
    getVersionNumber(): Promise<string>;
    getVersionChangelog(): Promise<string>;
    getVersionFileSHA1(): Promise<string>;
    listDependencies(): Promise<Content[]>;
    getVersionFileURL(): Promise<string>;
}
export declare class CurseForgeContent implements Content {
    private model;
    private got;
    isVersion: false;
    constructor(model: CurseForgeMod, got: Got);
    getType(): ContentType;
    isLibrary(): Promise<boolean>;
    getBody(): Promise<string>;
    getTitle(): Promise<string>;
    getDescription(): Promise<string>;
    getIconURL(): Promise<string>;
    getURLs(): Promise<Map<string, string>>;
    getScreenshots(): Promise<Screenshot[]>;
    getOtherInformation(): Promise<Map<string, string>>;
    listVersions(forVersion?: MinecraftVersion | undefined): Promise<ContentVersion[]>;
}
export default class CurseForgeContentService implements ContentService<number> {
    private launcher;
    private got;
    constructor(launcher: Launcher);
    getVersionFromFile(path: string): Promise<ContentVersion | null>;
    getDefaultSortField(): number;
    getUnsupportedContentTypes(): ContentType[];
    getSortFields(): Record<string, number>;
    searchContent(name: string, skip: number, limit: number, type: ContentType, sortField: number, forVersion?: MinecraftVersion | undefined): Promise<Content[]>;
    getContentVersion(projectID: number, fileID: number): Promise<CurseForgeContentVersion>;
}
