import type { FailureMode } from "@vertigis/arcgis-extensions/FailureMode";
import type { ItemConfig } from "./ItemConfig.js";
/**
 * The most recent VertiGIS Studio App configuration schema version supported by
 * this API.
 */
export declare const CURRENT_SCHEMA_VERSION = "1.0";
/**
 * Configuration for a VertiGIS Studio App. An App is a portable format for
 * describing the items and settings used by VertiGIS Studio applications. Items
 * that are defined within an App (e.g. menus, layer extensions, web maps, etc.)
 * can be retrieved by loading the App configuration into an {@link AppContainer}
 * and using its {@link AppContainer.get} method.
 */
export interface AppConfig {
    /**
     * The version of the App configuration schema that is being used. Current
     * version is available via the {@link CURRENT_SCHEMA_VERSION } constant.
     */
    schemaVersion: string;
    /**
     * Specifies zero or more App configurations that are imported into this
     * one.
     *
     * Imports are processed in the order specified, followed by items and
     * settings that are locally defined in this AppConfig. If the same item is
     * defined multiple times, then the items' properties will get merged in
     * such a way that the later definitions will override earlier ones.
     * Similarly if a setting is defined several times, then the most recent
     * definition wins.
     */
    import?: string[];
    /**
     * User-defined settings. These can be referenced via URIs in the form
     * setting://setting-name.
     */
    settings?: {
        [setting: string]: string | number | boolean;
    };
    /**
     * User-defined failure modes for particular items. Items are referenced by
     * item uri.
     */
    failureModes?: {
        [itemUri: string]: FailureMode;
    };
    /**
     * The set of items defined in the App (order is irrelevant).
     */
    items?: ItemConfig[];
    /**
     * A human-readable name for the App.
     */
    title?: string;
}
