import { GxOption } from "../../common/types";
import { EntityData, ContextMenuInfo } from "../../common/types";
import { ComboBoxModel } from "@genexus/chameleon-controls-library";
declare const CHECKBOX_CHECKED_VALUE = "checked";
declare const CHECKBOX_UNCHECKED_VALUE = "unchecked";
export declare class GxIdeWWFiles {
    #private;
    el: HTMLGxIdeWwFilesElement;
    /**
     * The "After" control value. Controls the visibility of the "Date/Time" control.
     */
    afterValue: string;
    /**
     * The "Category" options as combo box model
     */
    categoriesComboBoxModel: ComboBoxModel;
    /**
     * Value of the Date/Time control
     */
    dateTimeValue: string;
    dateTimeValueChanged(): void;
    /**
     * A loader that is shown when the filter changes and the server has to retrieve new data.
     */
    isLoading: boolean;
    /**
     * The options for the "After" combo-box
     */
    filterAfterComboBoxModel: ComboBoxModel;
    /**
     * For show or hide the filters relative to modifiers
     */
    showModified: CheckboxState;
    /**
     * The files rendered in the table
     */
    objects: ObjectData[];
    /**
     * The categories render in the filter category selector
     */
    readonly categories: GxOption[];
    categoriesChanged(newCategories: GxOption[]): void;
    /**
     * This is a function provided by the developer for show the context menu of the selected files.
     */
    readonly contextMenuCallback: ContextMenuCallback;
    /**
     * The default value for the category filter
     */
    readonly defaultCategory: string;
    /**
     * The default value for the module/folder filter
     */
    readonly defaultModule: EntityData;
    /**
     * This is a function provided by the developer for delete the selected files.
     */
    readonly deleteSelectionCallback: DeleteSelectionCallback;
    /**
     * Controls the visibility of the tabular grid cell columns, and respective cells.
     */
    readonly gridColumnsVisibility: GridColumnsVisibility;
    /**
     *  This is a function provided by the developer that return a list of files to populate the table of files.
     */
    readonly loadCallback: LoadCallback;
    /**
     *
     */
    readonly newFileCallback: NewFileCallback;
    /**
     * This is a function provided by the developer to expand the data of files that is double-clicked or entered.
     */
    readonly openSelectionCallback: OpenSelectionCallback;
    /**
     * Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
     */
    readonly selectModuleCallback: SelectModuleCallback;
    /**
     * This is a function provided by the developer for expanded the data of files that is double-clicked or entered.
     */
    readonly selectionChangeCallback: SelectionChangeCallback;
    /**
     * Controls whether to show the Search contents field in the advanced filter section (Not available at the time of writting, since the server is not handling this feature yet.)
     */
    readonly showSearchContents = false;
    componentWillLoad(): Promise<void>;
    componentDidLoad(): void;
    keyDownHandler(eventInfo: KeyboardEvent): void;
    /**
     * Reloads the view, refreshing the filters and the table of files.
     */
    reload(): Promise<void>;
    render(): void;
}
export type SelectionChangeCallback = (ids: string[]) => Promise<void>;
export type OpenSelectionCallback = (ids: string[]) => Promise<void>;
export type DeleteSelectionCallback = (ids: string[]) => Promise<void>;
export type SelectModuleCallback = () => Promise<EntityData | undefined>;
export type ContextMenuCallback = (contextMenuInfo: ContextMenuInfo) => Promise<void>;
export type NewFileCallback = () => Promise<void>;
export type LoadCallback = (filters: ObjectFiltersData) => Promise<ObjectData[]>;
export interface ObjectFiltersData {
    name?: string;
    searchContents?: string;
    category?: string;
    parent?: string;
    allDescendants?: boolean;
    modifiedAfter?: string;
    modifiedBy?: string;
    modifiedDate?: Date;
}
export interface ObjectData {
    id: string;
    icon: string;
    name: string;
    description: string;
    parent: string;
    modifiedDate?: Date;
    lastUser?: string;
    importDate?: Date;
    lastBuildDate: Date;
}
export type GridColumnsVisibility = {
    description: boolean;
    importDate: boolean;
    lastBuildDate: boolean;
    lastUser: boolean;
    modifiedDate: boolean;
};
type CheckboxState = typeof CHECKBOX_CHECKED_VALUE | typeof CHECKBOX_UNCHECKED_VALUE;
export {};
