import { HttpAgent } from "@dfinity/agent";
import { FileExt, FileLocation, Result_1, Result_10, Result_2, Result_3, Result_7, Result_9 } from "./did/databox_type";
import { Principal } from "@dfinity/principal";
import { changePlainFilePermissionArg, shareFileArg } from "../types";
export declare class DataBox {
    private readonly agent;
    private readonly DataBoxActor;
    constructor(canisterId: string, agent: HttpAgent);
    boxState(): Promise<Result_10>;
    cycleBalance(): Promise<Result_7>;
    put_plain_files(files: File[], is_private: boolean, key_arr?: string[], fileTypes?: string[]): Promise<string[]>;
    static FileRead(file: File | Blob): Promise<Uint8Array[]>;
    static encryptFileData(data: Uint8Array, publicKey: string): Promise<{
        encData: Uint8Array;
        encryptedAesKey: string;
    }>;
    put_encrypt_files(files: File[], is_private: boolean, publicKey: string, key_arr?: string[]): Promise<string[]>;
    static getFile(decodeArr: any, length: number): Promise<Uint8Array>;
    private getData;
    get_plain_file(file_key: string): Promise<Blob>;
    get_encrypt_file(file_key: string, privatekey: string): Promise<Blob>;
    delete_box_plain_file(file_key: string): Promise<Result_1>;
    delete_box_encrypted_file(file_key: string): Promise<Result_1>;
    clear_box(): Promise<Result_1>;
    get_file_info(file_key: string): Promise<Result_2>;
    getVersion(): Promise<bigint>;
    get_all_files_info(): Promise<Result_9>;
    transferOwner(to: Principal): Promise<Result_1>;
    get_owner(): Promise<Principal>;
    setPlainFilePubOrPri(changePlainFilePermissionArg: changePlainFilePermissionArg): Promise<Result_1>;
    addPrivatePlainShare(shareFileArg: shareFileArg): Promise<Result_1>;
    removePrivatePlainShare(shareFileArg: shareFileArg): Promise<Result_1>;
    getShareFiles(): Promise<Result_3>;
    is_need_upgrade(): Promise<boolean>;
    is_enough_to_upload(total_size: number): Promise<boolean>;
    /**
     *
     * @param {FileLocation} fileLocation 文件位置
     * @return {Result_7} 数据个数
     */
    getFileNums(fileLocation: FileLocation): Promise<Result_7>;
    /**
     * 分页get数据
     *
     * @param {FileLocation} fileLocation 文件位置
     * @param {number} onePageFileNums 每一页的数据大小 不能超过5000
     * @param {number} pageIndex 取哪一页
     * @example
     * getPageFiles({Plain:null},2,0) 取明文数据，每一页有两个数据，取第一页
     */
    getPageFiles(fileLocation: FileLocation, onePageFileNums: number, pageIndex: number): Promise<FileExt[]>;
}
