/// <reference types="react" />
import { TagsModalState } from './TagsModalState';
import { Tag } from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';
import { CollectionOptimisticActions, CollectionState, FiltersMap, Tags, TagsBIReporter, TagsManagementState } from '@wix/bex-core';
import { TagsProps } from '../components/Tags';
import { TagsBulkAssignButtonState } from './TagsBulkAssignButtonState';
import { TagsBulkAssignAsyncState } from './TagsBulkAssignAsyncState';
import { TagsBulkAssignSyncState } from './TagsBulkAssignSyncState';
import { TagsAssignButtonConfig } from '../components/Tags/types';
export interface BulkUpdateTagsParams {
    entityIds: string[];
    assignTags: Tags;
    unassignTags: Tags;
}
export interface TagsBulkAssignPopoverStateParams<T, F extends FiltersMap> extends Pick<TagsProps<T, F>, 'bulkUpdateTags' | 'asyncBulkUpdateTags' | 'getTags' | 'assignButtonConfig' | 'bulkUpdateTagsShowUndoToast'> {
    readonly tagsManagementState: TagsManagementState;
    readonly tagsModalState: TagsModalState;
    readonly collectionState: CollectionState<T, F>;
}
export declare class TagsBulkAssignPopoverState<T, F extends FiltersMap> {
    readonly tagsManagementState: TagsManagementState;
    readonly collectionState: CollectionState<T, F>;
    readonly optimisticActions: CollectionOptimisticActions<T, F>;
    readonly tagsModalState: TagsModalState;
    readonly tagsBulkAssignButtonState: TagsBulkAssignButtonState;
    readonly bulkAssignSyncState: TagsBulkAssignSyncState<T, F>;
    readonly bulkAssignAsyncState: TagsBulkAssignAsyncState<T, F>;
    readonly container: import("@wix/bex-core").WixPatternsContainer;
    readonly tagsBIReporter: TagsBIReporter;
    readonly getTags?: (item: T) => Tags;
    readonly assignButtonConfig?: TagsAssignButtonConfig;
    initialSelectedIds: string[];
    initialIndeterminateTagIds: string[];
    indeterminateTagIds: string[];
    assignedTagIds: string[];
    optimisticNewTag: Tag | null;
    isShown: boolean;
    searchValue: string;
    triggerButtonRef: React.RefObject<HTMLButtonElement> | null;
    constructor({ tagsManagementState, collectionState, tagsModalState, bulkUpdateTags, asyncBulkUpdateTags, getTags, assignButtonConfig, bulkUpdateTagsShowUndoToast, }: TagsBulkAssignPopoverStateParams<T, F>);
    init(): () => void;
    showPopover(): Promise<void>;
    closePopover(): void;
    createAndAssignTag(name: string): Promise<void>;
    applyChanges(): Promise<void>;
    handleManageTagsCtaClick(): void;
    handleItemSelect(itemId: string): void;
    handleSearchChange(searchValue: string): void;
    retry(): void;
    get isInEmptyState(): boolean;
    get tagOptions(): Tag[];
    get assignedTags(): Tag[];
    get assignedWithOptimisticTagIds(): string[];
    get newAssignedTagIds(): string[];
    get newUnassignedTagIds(): string[];
    get canUseBulkUpdate(): boolean;
    get isError(): boolean;
    get error(): import("@wix/sdk-types").ResolvedError | undefined;
    get isLoading(): boolean;
    get isDirty(): boolean;
    assignTag: ({ tag }: {
        tag: Tag;
    }) => Promise<void>;
    assignTagOptimistic: (tagName: string, tagId?: string) => void;
    unassignTag: ({ tag }: {
        tag: Tag;
    }) => Promise<void>;
    private _calcTagsCount;
    private _getSelectedTagsIdsStatus;
    private _initSelectionState;
    private _isInitialUnassignedTag;
    private _reportPopoverShowChangedBi;
    private _reportSearchChangedBi;
    private _reportSearchEventsBi;
}
//# sourceMappingURL=TagsBulkAssignPopoverState.d.ts.map