import Collection from "@arcgis/core/core/Collection"; import type { AnalyticsContext } from "@vertigis/viewer-spec/analytics/AnalyticsContext"; import type { ComponentModelProperties } from "@vertigis/viewer-spec/app-config/web/ComponentModelProperties"; import type { AuthenticationService } from "../authentication/AuthenticationService"; import type { MessageBus } from "../messaging"; import type { PropertyDefs } from "../models"; import type { HasVisibility } from "../support/HasVisibility"; import type { Model } from "./Model"; import { ModelBase } from "./Model"; declare const messagesSymbol: unique symbol; /** * A model for a layout component. */ export interface ComponentModel extends Model, HasVisibility { /** * An icon ID for this model. */ icon: string | undefined; /** * A human-readable title for this model. */ title: string | undefined; /** * Whether this model should be included in landmarks. */ isLandmark: boolean; } /** * Base implementation for component models. */ export declare abstract class ComponentModelBase extends ModelBase implements ComponentModel { /** * Filters that determine whether the ComponentModel is visible to a given * end-user. If both visibleTo and hiddenFrom are undefined/empty, the * component will be visible to all users. */ readonly visibleTo: Collection; /** * Filters that determine whether the ComponentModel is hidden from a given * end-user. If both visibleTo and hiddenFrom are undefined/empty, the * component will be visible to all users. */ readonly hiddenFrom: Collection; protected _authService: AuthenticationService; private readonly _uiService; private [messagesSymbol]; private _icon; private _title; private _isLandmark; /** * An icon ID for this model. */ get icon(): string | undefined; set icon(icon: string | undefined); /** * Whether this model should be included in landmarks. */ get isLandmark(): boolean; set isLandmark(isLandmark: boolean); /** * A human-readable title for this model. */ get title(): string | undefined; set title(title: string | undefined); get messages(): MessageBus; set messages(value: MessageBus); /** * Whether or not the ComponentModel's corresponding component(s) should be * visible to the current user. */ get isVisibleToUser(): boolean; /** * Gets information that can be useful for reporting actions this component * performs to VertiGIS Studio Analytics. */ getAnalyticsContext(): AnalyticsContext; /** * A callback that's executed after the component is augmented by a loaded * project. */ protected _onProjectLoaded(): Promise; protected _getSerializableProperties(): PropertyDefs; } /** * Gets base serializable properties for all component models. Use this in * _getSerializableProperties() if you can't extend ComponentModelBase. */ export declare function getComponentModelBaseSerializableProperties(): PropertyDefs; export {};