import { Layout } from '../LayoutState';
import { AlertDefinition } from '../AlertState';
import { CustomSort } from '../CustomSortState';
import { FlashingCellDefinition } from '../FlashingCellState';
import { FormatColumn } from '../FormatColumnState';
import { PlusMinusNudge } from '../PlusMinusState';
import { Shortcut } from '../ShortcutState';
import { StyledColumn } from '../StyledColumnState';
import { ReportSchedule } from '../ExportState';
/**
 * Defines an Extended Layout - provides a Layout and all objects that refer to it
 */
export interface ExtendedLayout {
    /**
     * Layout being extended
     */
    Layout: Layout;
    /**
     * Object to be included in the Layout
     */
    Extensions: LayoutExtension[];
}
/**
 * Defines an object being extended in a Layout
 */
export interface LayoutExtension {
    /**
     * Module to which Extended Object belongs
     */
    Module: LayoutExtensionModule;
    /**
     * Object being Extended
     */
    Object: LayoutExtensionObject;
}
/**
 * Types of Adaptable Objects that can added to Extended Layouts
 */
export type LayoutExtensionObject = AlertDefinition | CustomSort | FlashingCellDefinition | FormatColumn | PlusMinusNudge | StyledColumn | Shortcut | ReportSchedule;
/**
 * Modules which can provide objects in Extended Layouts
 */
export type LayoutExtensionModule = 'Alert' | 'CustomSort' | 'FlashingCell' | 'FormatColumn' | 'FreeTextColumn' | 'PlusMinus' | 'Export' | 'Shortcut' | 'StyledColumn';
/**
 * Configuration for API methods which load objects that can be Layout extensions
 */
export interface LayoutExtendedConfig {
    includeLayoutNotExtendedObjects?: boolean;
    extendedLayoutName?: string;
}
