import { ObjectType } from "../../../components";
import { ContextMenuCallback } from "../../../components";
export declare class GxIdeTeamDevBringChanges {
    #private;
    el: HTMLGxIdeTeamDevBringChangesElement;
    private tabularGridEl;
    /**
     * An array that holds the id's of the objects that have been merged already.
     */
    alreadyMergedObjectsIdsArray: string[];
    /**
     * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.
     */
    atLeastOneObjectIsChecked: boolean;
    /**
     * True while commitObjects hasn't been loaded or is empty. Used to display a loader.
     */
    loading: boolean;
    /**
     * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.
     */
    objectsFiltered: CommitObject[];
    /**
     * The current search filter value
     */
    searchValue: string;
    /**
     * The current state filter value
     */
    stateFilterValue: ObjectStateForFilter;
    /**
     * A set that stores the marked state of each object cell. This is necessary because filtering the grid * causes marked cells to lose their state.
     */
    markedObjectsSet: Set<string>;
    /**
     * A map that holds the current commit objects states ("pending" | "warning" | "error" | "merged" | "reverted")
     */
    objectsStatesMap: Map<string, ObjectState>;
    objectsStatesMapChanged(newCommitObjectsStateMap: Map<string, ObjectState>): void;
    /**
     * A map that holds object messages, if any, for objects that could not be merged (these objects are in a "warning" or "error" state)
     */
    commitObjectsMessagesMap: Map<string, string>;
    /**
     * Set to true when objects are being mered. This helps disabling controls until all objects are done.
     */
    merging: boolean;
    /**
     * Detail about the commit
     */
    readonly commitDetail: CommitDetail;
    /**
     * Commit information
     */
    readonly commitInformation: CommitInformation[];
    /**
     * Array of commit
     */
    readonly commitObjects: CommitObject[];
    commitObjectsChanged(newCommitObjects: CommitObject[]): void;
    /**
     * Determines whether the filters are rendered or not.
     */
    readonly hideFilters: boolean;
    /**
     * The type of operation to perform: "merge" or "revert".
     */
    readonly operationType: OperationType;
    /**
     * The callback that is triggered when the user wants to merge more than one commit.
     */
    readonly mergeObjectsCallback: MergeObjectsCallback;
    /**
     * If true, the "Action" column will display a button instead of a pill, only when the action is
     */
    readonly revertPillAsButton: boolean;
    /**
     * Invoked when user activates the context menu on th grid.
     */
    readonly contextMenuCallback: ContextMenuCallback;
    /**
     * Callback to be executed when the user wants to view all comments.
     */
    readonly viewAllCommentsCallback: () => Promise<void>;
    /**
     * Callback to be executed when the user wants to edit the range.
     */
    readonly editRangeCallback: () => Promise<void>;
    componentWillLoad(): Promise<void>;
    /**
     * It allows the host updating an object state, by providing the object id.
     * @param objectId The ID of the object to update.
     * @param newState The new state to set on the object.
     * @param message Optional message explaining the change.
     *
     * @example
     * bringChanges.updateObjectState('obj-24', "merging", null);
     * bringChanges.updateObjectState('obj-27', "error", "The server did not respond.");
     */
    updateObjectState(objectId: string, newState: ObjectState, message: string): Promise<void>;
    render(): any;
}
export type OperationType = "merge" | "revert" | "merge-all";
export type CommitDetail = {
    genexusServer: string;
    knowledgeBase: string;
    currentVersion: string;
    mergeFromVersion: string;
};
export type CommitInformation = {
    id: string;
    comment: string;
    date: Date;
};
export type CommitObject = {
    id: string;
    date: Date;
    name: string;
    type: ObjectType;
    description: string;
    actionTaken: ObjectActionTaken;
};
export type ObjectActionTaken = "Inserted" | "Deleted" | "Modified" | "Unchanged" | "Unknown";
export type ObjectState = "to-merge" | "to-merge-marked" | "to-revert" | "merging" | "pending" | "warning" | "error" | "merged" | "reverted" | "reverting";
type ObjectStateForFilter = Extract<ObjectState, "to-merge" | "to-revert" | "warning" | "error" | "merged" | "reverted"> | "all";
export type MergeObjectsCallback = (objectsIds: string[]) => Promise<void>;
export {};
