import type { FileListObject } from "../../media";
import { type BaseModuleApiOptions, ModuleApi, type PrimaryFieldType, type TInput } from "../../modules/ModuleApi";
import type { ApiFetcher } from "../../Api";
export type MediaApiOptions = BaseModuleApiOptions & {
    upload_fetcher: ApiFetcher;
};
export declare class MediaApi extends ModuleApi<MediaApiOptions> {
    protected getDefaultOptions(): Partial<MediaApiOptions>;
    listFiles(): import("../../modules/ModuleApi").FetchPromise<import("../../modules/ModuleApi").ResponseObject<FileListObject[], FileListObject[]>>;
    getFile(filename: string): import("../../modules/ModuleApi").FetchPromise<import("../../modules/ModuleApi").ResponseObject<ReadableStream<Uint8Array<ArrayBufferLike>>, ReadableStream<Uint8Array<ArrayBufferLike>>>>;
    getFileStream(filename: string): Promise<ReadableStream<Uint8Array>>;
    download(filename: string): Promise<File>;
    getFileUploadUrl(file?: {
        path: string;
    }): string;
    getEntityUploadUrl(entity: string, id: PrimaryFieldType, field: string): string;
    getUploadHeaders(): Headers;
    protected uploadFile(body: File | ReadableStream, opts?: {
        filename?: string;
        path?: TInput;
        _init?: Omit<RequestInit, "body">;
    }): import("../../modules/ModuleApi").FetchPromise<any>;
    upload(item: Request | Response | string | File | ReadableStream, opts?: {
        filename?: string;
        _init?: Omit<RequestInit, "body">;
        path?: TInput;
        fetcher?: ApiFetcher;
    }): Promise<any>;
    uploadToEntity(entity: string, id: PrimaryFieldType, field: string, item: Request | Response | string | File | ReadableStream, opts?: {
        _init?: Omit<RequestInit, "body">;
        fetcher?: typeof fetch;
    }): Promise<any>;
    deleteFile(filename: string): import("../../modules/ModuleApi").FetchPromise<any>;
}
