import { type TContext } from 'tspace-spear';
import { NfsServerCore } from './server.core';
import type { TCredentials, TLoginCrentials, TMonitors, TSetup } from '../types';
declare class NfsStudio extends NfsServerCore {
    protected _onStudioBucketCreated?: ({ bucket, secret, token }: TCredentials) => Promise<void> | null;
    protected _onStudioCredentials?: ({ username, password }: TLoginCrentials) => Promise<{
        logged: boolean;
        buckets: string[];
    }> | null;
    protected _onLoadBucketCredentials?: () => Promise<TCredentials[]>;
    protected _monitors?: ({ host, memory, cpu }: TMonitors) => Promise<void>;
    protected _onSetup?: () => TSetup;
    private BASE_FOLDER_STUDIO;
    /**
     * The 'useStudio' is method used to wrapper to check the credentials for studio.
     * @param    {object}   studio
     * @property {function} studio.onCredentials
     * @property {function} studio.onBucketCreated
     * @returns  {this}
     */
    useStudio({ onCredentials, onBucketCreated, onLoadBucketCredentials, onSetup }: {
        onCredentials: (({ username, password }: {
            username: string;
            password: string;
        }) => Promise<{
            logged: boolean;
            buckets: string[];
        }>);
        onBucketCreated?: (({ token, secret, bucket }: {
            token: string;
            secret: string;
            bucket: string;
        }) => Promise<void>);
        onLoadBucketCredentials?: (() => Promise<{
            bucket: string;
            token: string;
            secret: string;
        }[]>);
        onSetup?: () => TSetup;
    }): this;
    /**
     * The 'onMonitors' is method used to monitors the server.
     *
     * @param    {function} callback
     * @property {string} callback.host
     * @property {object} callback.memory
     * @property {object} callback.cpu
     * @returns  {this}
     */
    onMonitors(callback: ({ host, memory, cpu }: {
        host: string | null;
        memory: {
            total: number;
            heapTotal: number;
            heapUsed: number;
            rss: number;
            external: number;
        };
        cpu: {
            total: number;
            max: number;
            min: number;
            avg: number;
            speed: number;
        };
    }) => Promise<void>): this;
    protected studio: ({ res, cookies }: TContext) => Promise<any>;
    protected studioStorage: ({ req, res }: TContext) => Promise<void>;
    protected studioPreview: ({ req, res, params }: TContext) => Promise<any>;
    protected studioPreviewText: ({ req, res, params }: TContext) => Promise<any>;
    protected studioPreviewTextEdit: ({ req, res, params, body }: TContext) => Promise<void>;
    protected studioLogin: ({ res, body }: TContext) => Promise<void>;
    protected studioLogout: ({ res }: TContext) => Promise<void>;
    protected studioUpload: ({ req, res, files, body }: TContext) => Promise<void>;
    protected studioDownload: ({ req, res, body }: TContext) => Promise<void>;
    protected studioBucket: ({ req, res }: TContext) => Promise<void>;
    protected studioBucketCreate: ({ req, res, body }: TContext) => Promise<void>;
    protected studioFiles: ({ req, res, params }: TContext) => Promise<void>;
    protected studioEdit: ({ req, res, params, body }: TContext) => Promise<void>;
    protected studioRemove: ({ req, res, body, params }: TContext) => Promise<void>;
    protected studioGetPathShared: ({ req, res, params }: TContext) => Promise<void>;
    protected studioShared: ({ req, res, params, query }: TContext) => Promise<void | import("tspace-spear").TResponse<any>>;
    private _verifyShared;
    private _htmlFormatted;
}
export { NfsStudio };
export default NfsStudio;
