import type FeatureLayer from "@arcgis/core/layers/FeatureLayer";
import type { DefinitionEditorJson } from "./DefinitionEditorJson";
import type { FormInfoJson } from "./FormInfoJson";
import type { LayerDefinitionJson } from "./LayerDefinitionJson";
import type { PopupInfoJson } from "./PopupInfoJson";
/**
 * Root element in the web map specifying an array of table objects.
 *
 * See {@link https://developers.arcgis.com/web-map-specification/objects/table/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/table/}.
 */
export interface TableJson {
    /**
     * A comma-separated string listing which editing operations are allowed on
     * an editable feature service. Available operations include: 'Create',
     * 'Delete', 'Query', 'Update', and 'Editing'.
     */
    capabilities?: "Create" | "Delete" | "Query" | "Update" | "Editing" | null;
    /**
     * Object indicating the definitionEditor used as a layer's interactive
     * filter.
     */
    definitionEditor?: DefinitionEditorJson | null;
    /**
     * A formInfo object defining the content of the form when you are editing a
     * record.
     */
    formInfo?: FormInfoJson | null;
    /**
     * Unique string identifier for the table.
     */
    id?: string | null;
    /**
     * Unique string value indicating an item registered in ArcGIS Online or
     * your organization's portal.
     */
    itemId?: string | null;
    /**
     * A layerDefinition object defining the attribute schema and drawing
     * information for the layer. Used with CSV layers.
     */
    layerDefinition?: LayerDefinitionJson | null;
    /**
     * An object defining the content of popup windows when you query a record
     * and the sort option for child related records.
     */
    popupInfo?: PopupInfoJson | null;
    /**
     * Refresh interval of the table in minutes. Non-zero value indicates
     * automatic table refresh at the specified interval. Value of 0 indicates
     * auto refresh is not enabled.
     */
    refreshInterval?: number | null;
    /**
     * String value for the title of the table.
     */
    title?: string | null;
    /**
     * String value indicating the URL reference of the hosted table.
     */
    url?: string | null;
}
/**
 * Creates an ArcGIS JS API table (FeatureLayer) from the given table JSON.
 *
 * @param tableJson The JSON to convert.
 */
export declare function jsonToTable(tableJson: TableJson): Promise<FeatureLayer>;
/**
 * Updates an ArcGIS JS API table (FeatureLayer) from the given table JSON.
 *
 * @param tableJson The JSON to apply.
 * @param table The table to update.
 */
export declare function applyJsonToTable(tableJson: Partial<TableJson>, table: FeatureLayer): Promise<void>;
/**
 * Serializes an ArcGIS JS API table to JSON.
 *
 * @param table The table to serialize.
 */
export declare function tableToJson(table: FeatureLayer): TableJson;
