/// <reference types="node" />
import { Observable } from "rxjs/Observable";
import "rxjs/add/observable/of";
import "rxjs/add/observable/throw";
import "rxjs/add/observable/bindNodeCallback";
import "rxjs/add/operator/do";
import "rxjs/add/operator/map";
import { IContainerModuleOpts, ContainerModule } from "../../container";
/** Assets files cached when read. */
export interface IAssetsCache {
    [key: string]: Buffer | string | object;
}
export declare const ENV_ASSETS_PATH = "ASSETS_PATH";
/** Assets read only files interface. */
export declare class Assets extends ContainerModule {
    private _path;
    private _cache;
    readonly path: string;
    readonly cache: IAssetsCache;
    constructor(name: string, opts: IContainerModuleOpts);
    /** Overload signature for correct return types. */
    readFile(target: string): Observable<Buffer>;
    readFile(target: string, encoding?: string): Observable<string>;
    /** Read assets file contents and parse JSON object. */
    readJson(target: string, encoding?: string): Observable<object>;
    /** Read assets file contents. */
    protected read<T>(target: string, encoding?: string): Observable<T>;
}
