import 'isomorphic-unfetch';
export interface File {
    url: string;
    shortName: string;
    originalName: string;
    mimeType: string;
    uncachedHits: number;
    updatedAt: number;
    size: number;
    parent?: string;
    private: boolean;
    ephemeralTimestamp: number | null;
    hasPassword: boolean;
}
export interface Folder {
    id: string;
    name: string;
    parent?: string;
}
export declare type User = {
    id: string;
    name: string;
    email?: string;
    admin: boolean;
    usage: number;
    preferredDomain: string;
};
export declare type UsageInfo = {
    username: string;
    usage: number;
    email: string;
};
export declare class PatClient {
    private baseUrl;
    token?: string;
    constructor(baseUrl?: string);
    files(parent: string | undefined): Promise<File[]>;
    upload(file: globalThis.File, parent: string | undefined, onProgress?: (loaded: number, total: number) => void): Promise<File>;
    replace(shortName: string, file: globalThis.File, onProgress?: (loaded: number, total: number) => void): Promise<File>;
    getDownloadToken(shortName: string, password?: string): Promise<string>;
    updateFileSharing(shortName: string, isPrivate: boolean, details: {
        ephemeralTimestamp: number | null;
        password: string | boolean;
    }): Promise<File>;
    moveFile(shortName: string, details: {
        originalName?: string;
        parent?: string | undefined;
    }, copy?: boolean): Promise<File>;
    getFile(shortName: string): Promise<File>;
    deleteFile(shortName: string): Promise<File>;
    deleteFolder(id: string): Promise<File>;
    folders(parent: string | undefined): Promise<Folder[]>;
    createFolder(name: string, parent: string | undefined): Promise<Folder>;
    moveFolder(id: string, details: {
        name?: string;
        parent?: string | undefined;
    }): Promise<File>;
    getFolder(id: string): Promise<Folder[]>;
    checkAuth(): Promise<boolean>;
    login(username: string, password: string): Promise<{
        sessionToken: string;
        expiration: Date;
    }>;
    resetPassword(nameOrEmail: string): Promise<void>;
    completeResetPassword(resetToken: string, newPassword: string, regenerateAccessToken: boolean): Promise<void>;
    invalidateSession(): Promise<void>;
    regenerateAccessToken(): Promise<string>;
    me(): Promise<User>;
    setDomain(domain: 'doggo.ninja' | 'ninja.dog'): Promise<User>;
    adminUsage(): Promise<UsageInfo[]>;
    makeUser(username: string, email: string): Promise<void>;
    makeUploadRequest<Type = {}>(method: 'post' | 'put' | 'delete', url: string, file: globalThis.File, onProgress?: (loaded: number, total: number) => void): Promise<Type>;
    makeRequest<Type = {}>(method: 'get' | 'post' | 'put' | 'delete', path: string, query?: Record<string, string | undefined>, body?: Record<string, unknown>): Promise<Type>;
}
