import { ContextMenuInfo } from "../../../components";
import { ItemNode } from "../../select-kb-items/select-kb-items";
import { ObjectState } from "../version-control/common/types";
export declare class GxIdeTeamDevHistory {
    #private;
    el: HTMLGxIdeTeamDevHistoryElement;
    historyDetail: RevisionDetailData;
    /**
     * The files rendered in the table
     */
    objects: RevisionData[];
    /**
     * Used to hide the select-kb-items when collapsed
     */
    sidebarExpanded: boolean;
    /**
     * Used to show or hide the filters section
     */
    filtersHidden: boolean;
    /**
     * To show a loader when the component is loading
     */
    loading: boolean;
    /**
     * The Id of the selected revision in the revisions grid
     */
    selectedRevisionId: string;
    /**
     * Used to customize the select-kb-items "header" part grid layout
     */
    hasActiveVersion: boolean;
    /**
     * Possible values of type filter
     */
    readonly types: ObjectType[];
    /**
     * Callback emitted when the user right click on an item
     */
    readonly itemContextMenuCallback: (info: ContextMenuInfo) => Promise<void>;
    /**
     * Callback invoked when user right-clicks on the grid
     */
    readonly gridContextMenuCallback: (info: ContextMenuInfo) => Promise<void>;
    /**
     * Callback to load the items list model
     */
    readonly loadVersionsCallback: () => Promise<ItemNode[]>;
    /**
     * Callback invoked when is necessary to reload the history info. Receive the filters as parameters and only returns the info corresponding to the master grid.
  
     */
    readonly loadCallback: LoadCallback;
    /**
     * Callback invoked to obtain detailed info from a revision. As parameter receive internal revision id
     */
    readonly loadDetailCallback: LoadDetailCallback;
    /**
     * Callback invoked when the selected version changes. As parameter receive the selected version id
     */
    readonly selectedVersionChangeCallback: SelectedVersionChangeCallback;
    componentWillLoad(): Promise<void>;
    componentDidLoad(): Promise<void>;
    reload(): Promise<void>;
    render(): any;
}
export type ObjectType = {
    id: string;
    name: string;
    icon?: string;
};
export type FiltersData = {
    search: string;
    from?: Date;
    to?: Date;
    user?: string;
    revision?: string;
    type?: string;
};
export type RevisionData = {
    id: string;
    comment: string;
    user: string;
    commitDate: Date;
};
export type RevisionDetailData = {
    title: string;
    comment: string;
    objects: ObjectData[];
};
export type ObjectData = {
    typeIcon: string;
    state: ObjectState;
    name: string;
    type: ObjectType;
    description: string;
    action: string;
};
export type LoadCallback = (filters: FiltersData, versionId: string, isRefresh: boolean) => Promise<RevisionData[]>;
export type LoadDetailCallback = (revision: string) => Promise<RevisionDetailData>;
export type SelectedVersionChangeCallback = (selectedVersion: string[]) => Promise<void>;
