/// <reference types="node" />
import { ILambdaConfig } from '../types';
interface IFileServiceConstructorConfig {
    cwd?: string;
    fs?: any;
    sysinfo?: any;
    dirname?: string;
}
export declare class FileService {
    private cwd;
    private fs;
    private sysinfo;
    private dirname;
    constructor({ cwd, fs, sysinfo, dirname, }?: IFileServiceConstructorConfig);
    copy(sourcePath: string, destinationPath: string): void | Error;
    directoryOrFileExists(pathToFile: string): boolean | Error;
    /**
     * Returns the path to a functions folder or a file inside a function folder
     * @param {string} functionsName
     * @param {string} [fileName]
     * @returns {string} - path to function or file
     * @memberof FileService
     */
    getPathToFunction(functionsName: string, fileName?: string): string;
    /**
     * Returns the path to the settings.json
     * @returns {string} - path to settings.json
     * @memberof FileService
     */
    getPathToSettings(): string;
    /**
     * Reads a the content of a file
     * @param {string} pathToFile - path to file
     * @param {boolean} [parseJSON=true] - should the output be parsed as JSON
     * @param {string} [encoding='utf8'] - encoding of the file
     * @returns {*} - content of a file
     * @memberof FileService
     */
    read(pathToFile: string, parseJSON?: boolean, encoding?: string): any;
    /**
     * Returns all function directories
     * @returns {string[]} - Array of function folders
     * @memberof FileService
     */
    getFunctionsDirectories(): string[];
    /**
     * Write content to a file
     * @param {string} pathToWriteFile - path to the file
     * @param {*} data - content of the file
     * @param {boolean} [stringify=true] - should the content be stringified
     * @param {string} [encoding='utf8'] - encoding of the file
     * @returns {void}
     * @memberof FileService
     */
    write(pathToWriteFile: string, data: any, stringify?: boolean, encoding?: string): void;
    /**
     * Returns the decrypted temp file.
     * @returns {Promise<any>} - returns the decrypted temp file
     * @memberof FileService
     */
    getTempFile(): Promise<any>;
    /**
     * Writes the temp file to the temp directory of the os.
     * (Temp directory of the OS gets cleared after restart)
     * @param {*} data - temp file content
     * @returns {Promise<void>} - void
     * @memberof FileService
     */
    writeTempFile(data: any): Promise<void>;
    /**
     * Deletes the temp file from the os temp directory
     * @memberof FileService
     */
    deleteTempFile(): void;
    /**
     * Returns the function config (config.json) of the passed function.
     * @param {string} functionName - function name
     * @returns {*} - config
     * @memberof FileService
     */
    getFunctionConfig(functionName: string): ILambdaConfig;
    /**
     * Returns config files for multiple passed functions.
     * @param {string[]} [lambdaFunctions] - lambda functions
     * @returns {ILambdaConfig[]} - Lambda configs
     * @memberof FileService
     */
    collectLocalLambdaInformation(lambdaFunctions?: string[]): ILambdaConfig[];
    /**
     * Returns the name of the function folder.
     * Needed if the user calls a command inside a function folder.
     * @returns {string} - function folder name
     * @memberof FileService
     */
    getFunctionFolderName(): string;
    /**
     * Returns the path to the root directory
     * @returns {string} - root directory
     * @memberof FileService
     */
    getRoot(): string;
    needUpdateBinFolder(): boolean;
    /**
     * Return the config for crypto.
     * Takes the uuid of the system as password for pseudo encryption.
     * @returns {Promise<{ algorithm: string; key: Buffer; iv: string }>}
     */
    getCryptoConfig(): Promise<{
        algorithm: string;
        key: Buffer;
        iv: string;
    }>;
    private encrypt;
    private decrypt;
}
export {};
