/// <reference types="node" />
import { EventEmitter } from "events";
import * as immutable from "immutable";
import { Database } from "./types";
export declare type HostInfo = immutable.Map<string, any>;
export declare class PublicPaths extends EventEmitter {
    is_ready: boolean;
    private synctable;
    private vhosts;
    private public_paths_in_project;
    private last_public_paths?;
    private _order?;
    private database;
    constructor(database: Database);
    private do_init;
    get(id: string | string[]): HostInfo | immutable.Map<string, HostInfo> | undefined;
    get_all(): immutable.Map<string, any>;
    private add_vhost;
    private delete_vhost;
    get_vhost(hostname: string): HostInfo | undefined;
    private init_public_paths;
    private update_public_paths;
    get_id(project_id: string, path: string): string;
    get_info(project_id: string, path: string): HostInfo | undefined;
    required_token(project_id: string, path: string): string | undefined;
    public_path(project_id: string, path: string): string | undefined;
    is_public(project_id: string, path: string): boolean;
    is_access_allowed(project_id: string, // the project_id
    path: string, // a path of an actual share.
    token: string | undefined): boolean;
    get_views(project_id: string, path: string): number | undefined;
    increment_view_counter(project_id: string, // the project_id
    path: string): Promise<void>;
    order(): immutable.List<string>;
    private init;
}
export declare function get_public_paths(database: Database): Promise<PublicPaths>;
