import { ComboBoxModel } from "@genexus/chameleon-controls-library";
import { ContextMenuInfo, EntityData, GxOption } from "../../common/types";
export declare class GxIdeWWImages {
    #private;
    el: HTMLGxIdeWwImagesElement;
    categoriesComboBoxModel: ComboBoxModel;
    densitiesComboBoxModel: ComboBoxModel;
    languagesComboBoxModel: ComboBoxModel;
    layersComboBoxModel: ComboBoxModel;
    stylesComboBoxModel: ComboBoxModel;
    /**
     * The current value of the "After" combo box options.
     */
    afterCurrentValue: string;
    /**
     * The options for the "After" combo-box
     */
    filterAfterOptions: ComboBoxModel;
    /**
     * Image data to be displayed in the tabular grid (filtered from server and sorted)
     */
    tabularGridData: ImageData[];
    /**
     * Images rendered in the table
     */
    images: ImageData[];
    /**
     * Items of the selected image
     */
    imagesSelectedItems: ImageItemData[];
    /**
     * Selected images in the images table
     */
    selectedObjectsIds: string[];
    /**
     * When true, modified controls will be enabled, otherwise disabled.
     */
    enabledModifiedControls: boolean;
    /**
     * Sorting order for images table
     */
    order: {
        orderCriteria: string | null;
        ascending: boolean | null;
    };
    /**
     * Filter state variables
     */
    filterNameValue: string;
    filterSearchContentsValue: string;
    filterCategoryValue: string;
    filterAllDescendantsValue: boolean;
    filterAfterTypeValue: string;
    filterUserValue: string;
    filterModifiedDateValue: string;
    filterStyleValue: string;
    filterLanguageValue: string;
    filterDensityValue: string;
    filterLayerValue: string;
    filterModuleValue: EntityData;
    /**
     * Categories rendered in the filter selector
     */
    readonly categories: GxOption[];
    categoriesChanged(newCategories: GxOption[]): void;
    /**
     * Function to expand data when right-click
     */
    readonly contextMenuCallback: ContextMenuCallback;
    /**
     * Default value for the 'categories' filter
     */
    readonly defaultCategory: string;
    defaultCategoryChanged(): void;
    /**
     * Default value for the module/folder filter
     */
    readonly defaultModule: EntityData;
    /**
     * Function to delete the selected images.
     */
    readonly deleteSelectionCallback: DeleteSelectionCallback;
    /**
     * Densities rendered in the filter selector
     */
    readonly densities: GxOption[];
    densitiesChanged(newDensities: GxOption[]): void;
    /**
     * Languages rendered in the filter selector
     */
    readonly languages: GxOption[];
    languagesChanged(newLanguages: GxOption[]): void;
    /**
     * Layers rendered in the filter selector
     */
    readonly layers: GxOption[];
    layersChanged(newLayers: GxOption[]): void;
    /**
     * Function that returns a list of images for the table
     */
    readonly loadCallback: LoadCallback;
    /**
     * Function that returns a list of items for the selected image
     */
    readonly loadImageItemsCallback: LoadImageItemsCallback;
    /**
     * Callback invoked when user press New button.
     */
    readonly newObjectCallback: NewObjectCallback;
    /**
     * Function to expand data for double-clicked or entered images
     */
    readonly openSelectionCallback: OpenSelectionCallback;
    /**
     * Callback invoked when an action is executed on the Module/Folder filter.
     */
    readonly selectModuleCallback: SelectModuleCallback;
    /**
     * Callback invoked when an item is selected
     */
    readonly selectionObjectChangedCallback: SelectionObjectCallback;
    /**
     * Styles rendered in the filter style selector
     */
    readonly styles: GxOption[];
    stylesChanged(newStyles: GxOption[]): void;
    connectedCallback(): Promise<void>;
    componentDidLoad(): void;
    componentWillLoad(): Promise<void>;
    keyDownHandler(eventInfo: KeyboardEvent): void;
    /**
     * Reloads the view, refreshing the filters and the images table.
     */
    reload(): Promise<void>;
    /**
     * Watch filter state variables and trigger #getImages when they change
     */
    filterNameValueChanged(): void;
    filterSearchContentsValueChanged(): void;
    filterCategoryValueChanged(): void;
    filterAllDescendantsValueChanged(): void;
    filterAfterTypeValueChanged(): void;
    filterUserValueChanged(): void;
    filterModifiedDateValueChanged(): void;
    filterStyleValueChanged(): void;
    filterLanguageValueChanged(): void;
    filterDensityValueChanged(): void;
    filterLayerValueChanged(): void;
    filterModuleValueChanged(): void;
    render(): void;
}
export type ContextMenuCallback = (contextMenuInfo: ContextMenuInfo) => Promise<void>;
export type DeleteSelectionCallback = (ids: string[]) => Promise<void>;
export type FilerInitialData = {
    name: string;
    module: EntityData;
    searchContents: string;
    category: string;
    allDescendants: string;
    modifiedAfter: string;
    modifiedDateTime: string;
    modifiedUser: string;
    style: string;
    language: string;
    density: string;
    layer: string;
};
export type ImageData = {
    id: string;
    icon: string;
    name: string;
    description: string;
    parent: string;
    module: string;
    modifiedDate?: Date;
    lastUser?: string;
    importDate?: Date;
};
export type ImageFiltersData = {
    name?: string;
    searchContents?: string;
    category?: string;
    parent?: string;
    allDescendants?: boolean;
    modifiedAfter?: string;
    modifiedBy?: string;
    modifiedDate?: Date;
    style?: string;
    language?: string;
    density?: string;
    layer?: string;
};
export type ImageItemData = {
    id: string;
    name: string;
    url: string;
};
export type LoadCallback = (filters: ImageFiltersData) => Promise<ImageData[]>;
export type LoadImageItemsCallback = (id: string) => Promise<ImageItemData[]>;
export type NewObjectCallback = () => Promise<void>;
export type OpenSelectionCallback = (ids: string[]) => Promise<void>;
export type SelectModuleCallback = () => Promise<EntityData | undefined>;
export type SelectionObjectCallback = (ids: string[]) => Promise<void>;
