import type { DocumentSummarySchema, IFileSchema,  IFileSummarySchema,  PorjectSchema,  DataSourceItem,  DataSourceType } from '../types';
import { Document } from './Document';
import { Block } from './Block';
import { Node } from './Node';
import { DataSource } from './DataSource';
export declare type IFile = Document | Block;
export declare type INode = Document | Block | Node;
export declare class Project {
    files: Array<Document | Block>;
    dataSources: Array<DataSource>;
    current: Document | Block | null;
    name: string;
    title: string;
    homePageId: string;
    constructor(schema?: PorjectSchema);
    load(schema?: PorjectSchema): void;
    update(schema?: PorjectSchema): void;
    loadFile(schema: IFileSchema): void;
    createFile(schema: IFileSchema): Block;
    changeFile(file: IFile): void;
    removeFile(file: IFile): void;
    updateFile(schema: IFileSchema): void;
    validateFile(schema: IFileSummarySchema, file?: IFile | null): boolean;
    createDataSource(type: DataSourceType, items?: DataSourceItem[]): DataSource;
    getDataSourceByType(type: DataSourceType): DataSource;
    addDataSource(source: DataSource, item: DataSourceItem): void;
    updateDataSource(source: DataSource, item: DataSourceItem): void;
    replaceDataSource(source: DataSource, id: string, item: DataSourceItem): void;
    removeDataSource(source: DataSource, id: string): void;
    toSchema(): {
        name: string;
        title: string;
        files: DocumentSummarySchema[];
        dataSources: {
            type: DataSourceType;
            items: DataSourceItem[];
        }[];
        homePageId: string;
    };
}
