import type { EntityProperties } from "@vertigis/arcgis-extensions/Entity";
import type { ApplicationModelProperties } from "../common/ApplicationModelProperties.js";
/**
 * The privacy policy link location options.
 */
export type PrivacyPolicyLocation = "app-top-beginning" | "app-top-end" | "app-bottom-beginning" | "app-bottom-end" | "map-top-beginning" | "map-top-end" | "map-bottom-beginning" | "map-bottom-end" | "user-component" | "app-footer";
/**
 * Information on how and where to display the privacy policy link.
 */
export interface PrivacyPolicyInfoProperties extends EntityProperties {
    /**
     * The location in which the privacy policy information should be shown.
     * Defaults to user-component and falls back to the app-footer if the
     * specified location is not available.
     */
    location?: PrivacyPolicyLocation;
    /**
     * Optional markdown that contains additional information. This information
     * is shown in a secondary dialog when the location is not the user
     * component, or directly in the user component when it is the location.
     */
    markdown?: string;
}
/**
 * Global configuration for a VertiGIS Web application.
 */
export interface VertigisWebModelProperties extends ApplicationModelProperties {
    /**
     * Use an Esri API key to access location services and premium content in
     * your public application.
     */
    platformApiKey?: string;
    /**
     * Allowed origin for sending and receiving PostMessages.
     */
    postMessageAllowedOrigin?: string;
    /**
     * The privacy policy information.
     */
    privacyPolicyInfo?: PrivacyPolicyInfoProperties;
    /**
     * The collection of rules specifying the proxy URL to use for a given URL
     * prefix.
     */
    proxyRules?: ProxyRuleProperties[];
    /**
     * The proxy URL for the application.
     */
    proxyUrl?: string;
    /**
     * Indicates whether cross origin requests made to the associated server
     * should include credentials such as cookies and authorization headers.
     */
    trustedServers?: string[];
    /**
     * The version of VertiGIS Studio Web that was used to create this app
     * configuration.
     */
    version?: string;
}
/**
 * An object specifying a URL that should use a specific proxy.
 */
export interface ProxyRuleProperties {
    /**
     * The URL of the proxy.
     */
    proxyUrl: string;
    /**
     * The URL prefix of the resources that should be accessed through the given
     * proxy.
     */
    urlPrefix: string;
}
