import IFile from "../storage/IFile";
import IDefinition from "./IDefinition";
import Project from "../app/Project";
import ProjectItem from "../app/ProjectItem";
export interface IJigsawProcessorRule {
    input_predicate: {
        predicate_type: string;
        block?: string;
        probability?: number;
    };
    output_state: {
        name: string;
    };
}
export interface IJigsawProcessor {
    processor_type: string;
    rules: IJigsawProcessorRule[];
}
export interface IJigsawProcessorListDefinition {
    format_version: string;
    "minecraft:processor_list": {
        description: {
            identifier: string;
        };
        processors: IJigsawProcessor[];
    };
}
export default class JigsawProcessorListDefinition implements IDefinition {
    private _file?;
    private _data?;
    private _isLoaded;
    private _loadedWithComments;
    get data(): IJigsawProcessorListDefinition;
    get file(): IFile | undefined;
    set file(newFile: IFile | undefined);
    get isLoaded(): boolean;
    get id(): string;
    get processors(): IJigsawProcessor[];
    getFormatVersionIsCurrent(): Promise<boolean>;
    addChildItems(project: Project, item: ProjectItem): Promise<void>;
    static ensureOnFile(file: IFile): Promise<JigsawProcessorListDefinition | undefined>;
    /**
     * Loads the definition from the file.
     * @param preserveComments If true, uses comment-preserving JSON parsing for edit/save cycles.
     *                         If false (default), uses efficient standard JSON parsing.
     *                         Can be called again with true to "upgrade" a read-only load to read/write.
     */
    load(preserveComments?: boolean): Promise<void>;
    persist(): boolean;
}
