import { Readable } from 'node:stream';
import Commands, { CommandOutputFormat, type ParsedArgs } from '../commands.js';
import { Static } from '@sinclair/typebox';
export declare const Content: import("@sinclair/typebox").TObject<{
    UID: import("@sinclair/typebox").TString;
    SubmissionDateTime: import("@sinclair/typebox").TString;
    Keywords: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
    MIMEType: import("@sinclair/typebox").TString;
    SubmissionUser: import("@sinclair/typebox").TString;
    PrimaryKey: import("@sinclair/typebox").TString;
    Hash: import("@sinclair/typebox").TString;
    CreatorUid: import("@sinclair/typebox").TString;
    Name: import("@sinclair/typebox").TString;
}>;
export declare const TAKList_Content: import("@sinclair/typebox").TObject<{
    version: import("@sinclair/typebox").TString;
    type: import("@sinclair/typebox").TString;
    data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
        filename: import("@sinclair/typebox").TString;
        keywords: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
        mimeType: import("@sinclair/typebox").TString;
        name: import("@sinclair/typebox").TString;
        submissionTime: import("@sinclair/typebox").TString;
        submitter: import("@sinclair/typebox").TString;
        uid: import("@sinclair/typebox").TString;
        size: import("@sinclair/typebox").TInteger;
    }>>;
    messages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
    nodeId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>;
export declare const Config: import("@sinclair/typebox").TObject<{
    uploadSizeLimit: import("@sinclair/typebox").TInteger;
}>;
export default class FileCommands extends Commands {
    schema: {
        list: {
            description: string;
            params: import("@sinclair/typebox").TObject<{}>;
            query: import("@sinclair/typebox").TObject<{}>;
            formats: CommandOutputFormat[];
        };
    };
    cli(args: ParsedArgs): Promise<object | string>;
    list(): Promise<Static<typeof TAKList_Content>>;
    meta(hash: string): Promise<string>;
    download(hash: string): Promise<Readable>;
    adminDelete(hash: string): Promise<any>;
    delete(hash: string): Promise<any>;
    /**
     * Update a Package that should appear in the Public Data Packages List
     */
    uploadPackage(opts: {
        name: string;
        creatorUid: string;
        hash: string;
        keywords?: string[];
        mimetype?: string;
        groups?: string[];
    }, body: Readable | Buffer): Promise<string>;
    /**
     * Update a Package that will not appear in the Public Data Packages List
     * used primarily for sharing files between TAK clients
     */
    upload(opts: {
        name: string;
        contentLength: number;
        contentType?: string;
        keywords: string[];
        creatorUid: string;
        latitude?: string;
        longitude?: string;
        altitude?: string;
    }, body: Readable | Buffer): Promise<Static<typeof Content>>;
    count(): Promise<any>;
    update(hash: string, opts: {
        keywords?: string[];
        expiration?: number;
    }): Promise<void>;
    config(): Promise<Static<typeof Config>>;
}
