import { ReactElement } from 'react';
import { TagsAssignButtonConfig, TagsColumnConfig } from './types';
import { FiltersMap, Tags as TagsType } from '@wix/bex-core';
import { BulkUpdateTagsParams } from '../../state/TagsBulkAssignPopoverState';
import { AsyncBulkUpdateTagsParams } from '../../state/TagsBulkAssignAsyncState';
import { manageTagsPageAction } from './manageTagsPageAction';
export interface TagsProps<T, F extends FiltersMap> {
    /**
     * A string that represents the name of the entity type(for example "Orders"), will be shown on the title of the manage tags modal
     */
    entityTypeName: string;
    /**
     * Optional config for the column
     * @param hideable When set to false, will make the column always being checked and shown
     * @param defaultHidden  Unchecks the column by default for the first visit (not relevant when hideable=false)
     */
    columnConfig?: TagsColumnConfig<T>;
    /**
     * A callback function that gets a list of assigned and a list of unassigned tags for the selected entities in the bulk and updates the entities according to it
     * @param assignTags The assign tags objects that need to be update in the entities
     * @param unassignTags The unassign tags objects that need to be update in the entities
     * @param entityIds The entities IDs that need to be updated
     */
    bulkUpdateTags: (params: BulkUpdateTagsParams) => Promise<unknown>;
    /**
     * A callback function that takes the user's current entity selection as a parameter and starts an asynchronous bulk update of the tags using asyncJobInfra
     */
    asyncBulkUpdateTags?: (params: AsyncBulkUpdateTagsParams<T, F>) => Promise<{
        jobId: string;
    }>;
    getTags?: (item: T) => TagsType;
    assignButtonConfig?: TagsAssignButtonConfig;
    /**
     * When set to true, will disable "Manage tags" action in the page actions menu.
     */
    disableDefaultPageAction?: boolean;
}
export declare const Tags: {
    <T, F extends FiltersMap>(props: TagsProps<T, F>): null;
    manageTagsPageAction: typeof manageTagsPageAction;
};
export type TagsElement<T, F extends FiltersMap> = ReactElement<TagsProps<T, F>, typeof Tags>;
//# sourceMappingURL=Tags.d.ts.map