import { SourceMaps } from '@neo-one/client-common';
import { DescribeTable } from '@neo-one/server-plugin';
import { Observable } from 'rxjs';
import { Project, ProjectResourceType } from './ProjectResourceType';
interface ProjectResourceOptions {
    readonly resourceType: ProjectResourceType;
    readonly name: string;
    readonly rootDir: string;
    readonly sourceMaps: SourceMaps;
    readonly dataPath: string;
    readonly projectPath: string;
}
interface NewProjectResourceOptions {
    readonly resourceType: ProjectResourceType;
    readonly name: string;
    readonly rootDir: string;
    readonly sourceMaps: SourceMaps;
    readonly dataPath: string;
}
interface ExistingProjectResourceOptions {
    readonly resourceType: ProjectResourceType;
    readonly name: string;
    readonly dataPath: string;
}
export declare class ProjectResource {
    static createNew({ resourceType, name, rootDir, sourceMaps, dataPath, }: NewProjectResourceOptions): Promise<ProjectResource>;
    static createExisting({ resourceType, name, dataPath, }: ExistingProjectResourceOptions): Promise<ProjectResource>;
    private static getProjectPath;
    readonly resource$: Observable<Project>;
    private readonly resourceType;
    private readonly name;
    private readonly rootDir;
    private readonly sourceMaps;
    private readonly dataPath;
    private readonly projectPath;
    constructor({ resourceType, name, rootDir, sourceMaps, dataPath, projectPath }: ProjectResourceOptions);
    create(): Promise<void>;
    delete(): Promise<void>;
    getDebug(): DescribeTable;
    private toResource;
}
export {};
