import { Tag } from '@wix/bex-utils/@wix/ambassador-os-tags-v1-tag/types';
import { TagsManagementState } from './TagsManagementState';
import { TagsSearchState } from './TagsSearchState';
import { OnSubmitTagsFuncType, TagsAssignmentState } from './TagsAssignmentState';
import { TagsBIReporter } from './TagsBIReporter';
import { Tags } from './tagsTypes';
import { WixPatternsContainer } from '../WixPatternsContainer';
export declare const ADD_ITEM_OPTION_ID = "add-item-option";
export declare const MANAGE_TAGS_OPTION_ID = "manage-tags-option";
export interface TagsFormStateParams {
    readonly tagsManagementState: TagsManagementState;
    readonly origin: string;
    readonly entityTypeName: string;
    readonly initialTags?: Tags;
}
export declare class TagsFormState {
    readonly tagsAssignmentState: TagsAssignmentState;
    readonly tagsManagementState: TagsManagementState;
    readonly tagsSearchState: TagsSearchState;
    readonly tagsBIReporter: TagsBIReporter;
    readonly container: WixPatternsContainer;
    readonly origin: string;
    entityId?: string | null;
    previousSearchValue: string;
    isMultiSelectOnFocus: boolean;
    assignOptimisticActionParams: (tagName: string) => {
        onError: (error: unknown) => void;
        errorToast: () => {
            biName: string;
            message: string;
        };
        onTryAgain: () => void;
    };
    constructor({ tagsManagementState, origin, initialTags, }: TagsFormStateParams);
    init({ entityId }: {
        entityId?: string | null;
    }): () => void;
    get displayedAssignedTags(): {
        id: string;
        label: string;
    }[];
    get displayedTagOptions(): {
        id: string;
        value: string | null | undefined;
    }[];
    get isInEmptyState(): boolean;
    get searchValue(): string;
    get shouldShowCreateTagOption(): boolean | "";
    handleTagSelect(option: {
        id: string;
        value: string;
    }, onSubmit?: OnSubmitTagsFuncType): void;
    assignTag: (tag: Tag, onSubmit?: OnSubmitTagsFuncType) => Promise<void>;
    unassignTag: (tagId: string, onSubmit?: OnSubmitTagsFuncType) => Promise<void>;
    createAndAssignTag: (name: string, onSubmit?: OnSubmitTagsFuncType) => Promise<void>;
    handleManageTagsCtaClick(): void;
    handleSearchChange(newSearchValue: string): void;
    handleOptionsShow(): void;
    setIsMultiSelectOnFocus(isOnFocusValue: boolean): void;
    validate: () => Promise<{
        isValid: boolean;
        tags: {
            privateTags: {
                tagIds: string[];
            };
        };
        values: {
            privateTags: {
                tagIds: string[];
            };
        };
    }>;
    get isDirty(): boolean;
    private _invokeBiOnCtaClick;
}
//# sourceMappingURL=TagsFormState.d.ts.map