import IFile from "../storage/IFile";
import { IEventHandler } from "ste-events";
import IAddonManifest, { IAddonDependency, IAddonManifestHeader, IAddonMetadata, IAddonModule } from "./IAddonManifest";
import Project from "../app/Project";
import IDefinition from "./IDefinition";
export default class BehaviorManifestDefinition implements IDefinition {
    private _file?;
    private _id?;
    private _isLoaded;
    private _loadedWithComments;
    definition?: IAddonManifest;
    private _onLoaded;
    get isLoaded(): boolean;
    get file(): IFile | undefined;
    set file(newFile: IFile | undefined);
    get onLoaded(): import("ste-events").IEvent<BehaviorManifestDefinition, BehaviorManifestDefinition>;
    get productType(): "" | "addon" | undefined;
    set productType(value: "" | "addon" | undefined);
    get description(): string | undefined;
    set description(newDescription: string | undefined);
    get name(): string | undefined;
    set name(newName: string | undefined);
    get capabilities(): string[];
    get id(): string | undefined;
    set id(newId: string | undefined);
    setUuid(newId: string | undefined, project?: Project): Promise<void>;
    static setNewBehaviorPackId(project: Project, newBehaviorPackId: string, oldBehaviorPackId: string): Promise<void>;
    hasAddonProperties(): boolean;
    setAddonProperties(): Promise<void>;
    randomizeModuleUuids(newScriptModuleId?: string, oldScriptModuleId?: string): void;
    getNonScriptModuleDependencyCount(): number;
    getFirstNonScriptModuleDependency(): IAddonDependency;
    static ensureOnFile(file: IFile, loadHandler?: IEventHandler<BehaviorManifestDefinition, BehaviorManifestDefinition>): Promise<BehaviorManifestDefinition>;
    get version(): string | number[];
    get minEngineVersion(): string | number[];
    setMinEngineVersion(versionArray: number[], project: Project): void;
    setModuleVersion(moduleName: string, version: string): boolean;
    persist(): boolean;
    ensureDefinition(name: string, description: string): void;
    ensureHeaderForProject(project: Project): IAddonManifestHeader;
    ensureMetadata(): IAddonMetadata | undefined;
    ensureGeneratedWith(toolName: string, versionString: string): void;
    ensureHeader(name: string, description: string): IAddonManifestHeader;
    getDefaultHeader(name: string, description: string): {
        name: string;
        description: string;
        version: number[];
        min_engine_version: number[];
        uuid: string;
    };
    getScriptModule(): IAddonModule | undefined;
    ensureScriptModule(name: string, description: string): IAddonModule;
    save(): Promise<void>;
    /**
     * 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>;
    static getContent(project: Project, contentOnlyUpdate?: boolean): Promise<string>;
    static validatePackReferenceVersion(version: any): {
        isValid: boolean;
        versionArray?: number[];
        errorMessage?: string;
    };
    static validatePackId(packId: any): {
        isValid: boolean;
        errorMessage?: string;
    };
}
