import IFile from "../storage/IFile";
import IComponent from "./IComponent";
import IManagedComponentSetItem from "./IManagedComponentSetItem";
import IManagedComponent from "./IManagedComponent";
import { ManagedComponent } from "./ManagedComponent";
import IDefinition from "./IDefinition";
import Project from "../app/Project";
import ProjectItem from "../app/ProjectItem";
export interface IBiomeBehaviorData {
    format_version: string;
    "minecraft:biome": {
        description: {
            identifier: string;
        };
        components: {
            [componentName: string]: any;
        };
    };
}
export default class BiomeBehaviorDefinition implements IManagedComponentSetItem, IDefinition {
    private _typeId;
    private _file?;
    private _id?;
    private _isLoaded;
    _data?: IBiomeBehaviorData;
    private _managed;
    private _onLoaded;
    private _onComponentAdded;
    private _onComponentRemoved;
    private _onComponentChanged;
    get data(): IBiomeBehaviorData;
    get isLoaded(): boolean;
    get file(): IFile;
    get onLoaded(): import("ste-events").IEvent<BiomeBehaviorDefinition, BiomeBehaviorDefinition>;
    get onComponentAdded(): import("ste-events").IEvent<BiomeBehaviorDefinition, IManagedComponent>;
    get onComponentRemoved(): import("ste-events").IEvent<BiomeBehaviorDefinition, string>;
    get onComponentChanged(): import("ste-events").IEvent<BiomeBehaviorDefinition, IManagedComponent>;
    constructor(typeId?: string);
    get typeId(): string;
    set typeId(newId: string);
    get id(): string;
    set id(newId: string);
    private _ensureBiomeDataInitialized;
    ensureComponent(id: string, defaultData?: IComponent | string | string[] | boolean | number[] | number | undefined): IManagedComponent;
    getComponent(id: string): IManagedComponent | undefined;
    notifyComponentUpdated(id: string): void;
    getAllComponents(): IManagedComponent[];
    getComponents(): IManagedComponent[];
    addComponent(id: string, componentOrData: ManagedComponent | IComponent | string | string[] | boolean | number[] | number | undefined): IManagedComponent;
    removeComponent(id: string): void;
    static ensureOnFile(file: IFile): Promise<BiomeBehaviorDefinition | undefined>;
    persist(): Promise<boolean>;
    load(): Promise<void>;
    addChildItems(project: Project, item: ProjectItem): Promise<void>;
    static getComponentFromBaseFileName(name: string): string;
    get shortId(): string;
    get namespace(): string;
    ensureDefinition(): void;
}
