import IFile from "../storage/IFile";
import { IEventHandler } from "ste-events";
import { ISoundReference, ISoundDefinitionCatalog, ISoundDefinition } from "./ISoundDefinitionCatalog";
import Project from "../app/Project";
import ProjectItem from "../app/ProjectItem";
import IFolder from "../storage/IFolder";
export default class SoundDefinitionCatalogDefinition {
    _data?: ISoundDefinitionCatalog;
    private _file?;
    private _isLoaded;
    private _loadedWithComments;
    id: string | undefined;
    private _onLoaded;
    get isLoaded(): boolean;
    get file(): IFile | undefined;
    get onLoaded(): import("ste-events").IEvent<SoundDefinitionCatalogDefinition, SoundDefinitionCatalogDefinition>;
    set file(newFile: IFile | undefined);
    getSoundDefinitionSoundInstanceList(): any[];
    getCanonincalizedSoundPathList(): string[];
    get soundDefinitionPathList(): any[];
    getSoundDefinitionSetNameList(): any[];
    static ensureOnFile(file: IFile, loadHandler?: IEventHandler<SoundDefinitionCatalogDefinition, SoundDefinitionCatalogDefinition>): Promise<SoundDefinitionCatalogDefinition>;
    persist(): boolean;
    /**
     * 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>;
    deleteLinkToChild(childItem: ProjectItem): Promise<void>;
    getPackRootFolder(): any;
    getRelativePath(file: IFile, packRootFolder: IFolder): string;
    ensureDefintionForFile(project: Project, file: IFile): void;
    hasSoundByPath(soundDefSet: ISoundDefinition, path: string): string | ISoundReference;
    getSoundReferenceMatchesByPath(file: IFile): {
        [name: string]: ISoundReference[];
    };
    getSoundDefinitionMatchesByPath(file: IFile): {
        [name: string]: ISoundDefinition;
    };
    addChildItems(project: Project, item: ProjectItem): Promise<void>;
}
