interface FileOptions {
    name?: string;
    content: string;
    /**
     * @default "text"
     */
    language?: number | string;
}
interface CreateOptions {
    title?: string;
    description?: string;
    files: FileOptions[];
    fetchContent?: boolean;
}
declare const create: (options: CreateOptions) => Promise<Bin>;

interface FileData {
    name?: string;
    content?: string;
    languageId: number;
}
interface BinData {
    hits: number;
    key: string;
    title?: string;
    description?: string;
    files: FileData[];
    created: string;
}
interface SourcebinLinguistItem {
    name: string;
    color: string;
    extension: string;
    aliases?: string[];
    aceMode: string;
}

declare class File {
    readonly rawUrl: string;
    readonly name?: string;
    readonly content?: string;
    readonly languageId: number;
    readonly language: SourcebinLinguistItem;
    constructor(key: string, index: number, data: FileData);
}

declare class Bin {
    readonly key: string;
    readonly url: string;
    readonly shortUrl: string;
    readonly title?: string;
    readonly description?: string;
    readonly views: number;
    readonly created: Date;
    readonly files: File[];
    constructor(data: BinData);
}

interface GetOptions {
    /**
     * @default true
     */
    fetchContent?: boolean;
    /**
     * The key of the bin, can also be a sourcebin url
     */
    key: string;
}
declare const get: (options: GetOptions) => Promise<Bin>;

declare const url: (keyOrUrl: string) => {
    key: string;
    url: string;
    short: string;
};

export { Bin, BinData, CreateOptions, File, FileData, FileOptions, GetOptions, SourcebinLinguistItem, create, get, url };
