import { Pathy } from '@bscotch/pathy';
import { z } from 'zod';
import { StitchStorage } from './StitchStorage.js';
export type StitchProjectConfigFile = z.infer<(typeof StitchProjectConfig)['fileSchema']>;
/** The Project Config lives alongside the .yyp file */
export declare class StitchProjectConfig {
    readonly storage: StitchStorage;
    static readonly fileSchema: z.ZodObject<{
        $schema: z.ZodDefault<z.ZodLiteral<"https://raw.githubusercontent.com/bscotch/stitch/develop/packages/config/schemas/stitch.config.schema.json">>;
        textureGroupAssignments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
        audioGroupAssignments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
        runtimeVersion: z.ZodOptional<z.ZodString>;
        newSpriteRules: z.ZodOptional<z.ZodObject<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough">>>;
        newSoundRules: z.ZodOptional<z.ZodObject<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, z.ZodTypeAny, "passthrough">>>;
    }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
        $schema: z.ZodDefault<z.ZodLiteral<"https://raw.githubusercontent.com/bscotch/stitch/develop/packages/config/schemas/stitch.config.schema.json">>;
        textureGroupAssignments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
        audioGroupAssignments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
        runtimeVersion: z.ZodOptional<z.ZodString>;
        newSpriteRules: z.ZodOptional<z.ZodObject<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough">>>;
        newSoundRules: z.ZodOptional<z.ZodObject<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, z.ZodTypeAny, "passthrough">>>;
    }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
        $schema: z.ZodDefault<z.ZodLiteral<"https://raw.githubusercontent.com/bscotch/stitch/develop/packages/config/schemas/stitch.config.schema.json">>;
        textureGroupAssignments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
        audioGroupAssignments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
        runtimeVersion: z.ZodOptional<z.ZodString>;
        newSpriteRules: z.ZodOptional<z.ZodObject<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough">>>;
        newSoundRules: z.ZodOptional<z.ZodObject<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, z.ZodTypeAny, "passthrough">>>;
    }, z.ZodTypeAny, "passthrough">>;
    protected constructor(storage: StitchStorage);
    get filePathAbsolute(): string;
    getRuntimeVersion(): Promise<string | undefined>;
    setRuntimeVersion(version: string | undefined): Promise<void>;
    getTextureGroupAssignments(): Promise<Record<string, string>>;
    getTextureGroupsWithAssignedFolders(): Promise<string[]>;
    /**
     * The folders that have an assigned texture group,
     * sorted from *least* to *most* specific (allowing
     * texture groups of contained sprites to be assigned
     * in order).
     */
    getFoldersWithAssignedTextureGroups(): Promise<string[]>;
    getAudioGroupAssignments(): Promise<Record<string, string>>;
    getAudioGroupsWithAssignedFolders(): Promise<string[]>;
    /**
     * The folders that have an assigned texture group,
     * sorted from *least* to *most* specific (allowing
     * texture groups of contained sprites to be assigned
     * in order).
     */
    getFoldersWithAssignedAudioGroups(): Promise<string[]>;
    private addGroupAssignment;
    private deleteGroupAssignment;
    private getGroupAssignmentForPath;
    findTextureGroupForPath(path: string): Promise<string | undefined>;
    addTextureGroupAssignment(folder: string, textureGroup: string): Promise<void>;
    deleteTextureGroupAssignment(folder: string): Promise<void>;
    addAudioGroupAssignment(folder: string, textureGroup: string): Promise<void>;
    findAudioGroupForPath(path: string): Promise<string | undefined>;
    deleteAudioGroupAssignment(folder: string): Promise<void>;
    load(): Promise<z.objectOutputType<{
        $schema: z.ZodDefault<z.ZodLiteral<"https://raw.githubusercontent.com/bscotch/stitch/develop/packages/config/schemas/stitch.config.schema.json">>;
        textureGroupAssignments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
        audioGroupAssignments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
        runtimeVersion: z.ZodOptional<z.ZodString>;
        newSpriteRules: z.ZodOptional<z.ZodObject<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        }, z.ZodTypeAny, "passthrough">>>;
        newSoundRules: z.ZodOptional<z.ZodObject<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
            allowedNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
            defaults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                mono: z.ZodOptional<z.ZodBoolean>;
            }, "strip", z.ZodTypeAny, {
                mono?: boolean | undefined;
            }, {
                mono?: boolean | undefined;
            }>>>;
        }, z.ZodTypeAny, "passthrough">>>;
    }, z.ZodTypeAny, "passthrough">>;
    private loadField;
    private saveField;
    private save;
    /**
     * Given a path to a `.yyp` file, stitch config file, or folder containing a yyp file,
     * get a StitchProjectConfig instance.
     */
    static from(path: string | Pathy): StitchProjectConfig;
    static from(storage: StitchStorage): StitchProjectConfig;
}
//# sourceMappingURL=StitchProjectConfig.d.ts.map