import { Modrinth } from "../index";
import { ModrinthObject } from "../object";
import { ModSource } from "../structs/ModSource";
import { Version } from "./Version";
export interface License {
    id: string;
    name: string;
    url: string;
}
/** @internal */
export declare type ModSourceOmit = ("published" | "updated" | "versions");
export interface Mod extends Omit<ModSource, ModSourceOmit> {
}
export declare class Mod extends ModrinthObject<typeof Mod, Mod, ModSource> {
    static get(modrinth: Modrinth, id: string): Promise<Mod>;
    static getMultiple(modrinth: Modrinth, ids: string[]): Promise<Mod[]>;
    static fetch(modrinth: Modrinth, id: string): Promise<ModSource>;
    static fetchMultiple(modrinth: Modrinth, ids: string[]): Promise<ModSource[]>;
    static getObjectLocation(id: string): string;
    static getResourceLocation(id: string): string;
    static getCacheKey(id: string): string;
    static toSource(object: Mod): Partial<ModSource>;
    static fromSource(modrinth: Modrinth, source: ModSource): Mod;
    static update(modrinth: Modrinth, id: string, update: Partial<Mod>): Promise<void>;
    mutate(source: ModSource): Mod;
    published: Date;
    updated: Date;
    versions(): Promise<Version[]>;
    update(update: Partial<Mod>): Promise<Mod>;
    createVersion(body: any, file: any): Promise<Version>;
}
