import Project from "./Project";
import { ProjectItemType } from "./IProjectItemData";
import IProjectItemSeed from "./IProjectItemSeed";
import IFolder from "../storage/IFolder";
import ProjectItem from "./ProjectItem";
import SoundDefinitionCatalogDefinition from "../minecraft/SoundDefinitionCatalogDefinition";
import SoundCatalogDefinition from "../minecraft/SoundCatalogDefinition";
import IFile from "../storage/IFile";
import IGalleryItem from "./IGalleryItem";
export default class ProjectItemCreateManager {
    private static _getDefaultBehaviorPackPath;
    private static _getDefaultBehaviorPackFolderPath;
    private static _getDefaultDesignPackFolderPath;
    private static _getDefaultResourcePackPath;
    private static _getDefaultResourcePackFolderPath;
    private static _getDefaultScriptsFolderPath;
    static createNewItem(project: Project, itemSeed: IProjectItemSeed): Promise<ProjectItem | undefined>;
    static createNewScript(project: Project, itemType: ProjectItemType, name: string, folder: IFolder | undefined): Promise<ProjectItem>;
    static _generateFolderNameForNewItem(project: Project, basePath: string, baseName: string): Promise<string>;
    static _generateFileNameForNewItem(project: Project, basePath: string, baseName: string, extension: string): Promise<string>;
    static createNewGameTestScript(project: Project): Promise<void>;
    static createNewFunction(project: Project): Promise<void>;
    static createNewStructure(project: Project): Promise<void>;
    /**
     * "Empty file" / "Open as Raw" companion: drops a minimally-valid stub at the
     * conventional sub-folder for `contentType` under the project's default
     * behavior or resource pack. Used by the Add dialog's "Empty File (advanced)"
     * path so power users can author files that don't fit an existing wizard.
     *
     * If `desiredName` is omitted or already taken, a numeric suffix is appended
     * (handled by `_generateFileNameForNewItem`). Returns the created
     * `ProjectItem` so callers can select/open it.
     */
    static createNewEmptyStubFile(project: Project, contentType: ProjectItemType, desiredName?: string): Promise<ProjectItem | undefined>;
    /**
     * Map a content type to the sub-folder, default file name, extension, and
     * minimally-valid stub content used by `createNewEmptyStubFile`. Stubs are
     * intentionally tiny — the goal is to land an editable file at the right
     * path, not to template a fully-valid definition (the wizards do that).
     *
     * TODO: the `format_version` in JSON stubs is hardcoded to `STUB_FORMAT_VERSION`
     * below. The rest of the codebase resolves the latest format version
     * dynamically (see `FormatVersionManager` and `Database.getLatestVersionInfo`).
     * When this method becomes async-friendly, pull the version from there so
     * stubs don't go stale.
     */
    private static readonly STUB_FORMAT_VERSION;
    private static _emptyStubConfigsCache;
    private static get EMPTY_STUB_CONFIGS();
    private static _getEmptyStubConfig;
    static createNewActionSet(project: Project): Promise<void>;
    static createNewDocumentedType(project: Project): Promise<void>;
    static getExistingPath(project: Project, itemType: ProjectItemType): string;
    static createNewForm(project: Project, name?: string, folder?: IFolder): Promise<ProjectItem>;
    static ensureSoundDefinitionCatalogDefinition(project: Project): Promise<SoundDefinitionCatalogDefinition | undefined>;
    static setFileToDefaultContent(file: IFile): void;
    static addFromGallery(project: Project, newName: string, galleryItem: IGalleryItem): Promise<void>;
    static ensureSoundCatalogDefinition(project: Project): Promise<SoundCatalogDefinition | undefined>;
    static createDesignPackJsonItem(project: Project, itemSeed: IProjectItemSeed): Promise<ProjectItem | undefined>;
    static createBehaviorPackJsonItem(project: Project, itemSeed: IProjectItemSeed): Promise<ProjectItem | undefined>;
    static createResourcePackJsonItem(project: Project, itemSeed: IProjectItemSeed): Promise<ProjectItem | undefined>;
    static createNewResourcePackBinaryItem(project: Project, sourceFileName: string, extension: string, defaultFolderPath: string, exampleName: string, itemType: ProjectItemType, name?: string, folder?: IFolder): Promise<ProjectItem | undefined>;
    static createNewDesignPackBinaryItem(project: Project, sourceFileName: string, extension: string, defaultFolderPath: string, exampleName: string, itemType: ProjectItemType, name?: string, folder?: IFolder): Promise<ProjectItem | undefined>;
    static createNewDesignTexture(project: Project, name?: string, folder?: IFolder, creationData?: object): Promise<ProjectItem | undefined>;
    static createNewTexture(project: Project, name?: string, folder?: IFolder): Promise<ProjectItem | undefined>;
    static createNewAudio(project: Project, name?: string, folder?: IFolder): Promise<ProjectItem | undefined>;
    static createNewWorldTest(project: Project, name?: string, folder?: IFolder): Promise<void>;
}
