import { type Notifier, type Subscriber } from '@ni/fast-element';
import { FoundationElement } from '@ni/fast-foundation';
import type { MappingConfig } from './models/mapping-config';
import type { RichTextMentionValidator, RichTextMentionValidity } from './models/mention-validator';
import { MentionInternals, type MentionInternalsOptions } from './models/mention-internals';
import { Mapping } from '../../mapping/base';
/**
 * The base class for Mention configuration
 */
export declare abstract class RichTextMention<TValidator extends RichTextMentionValidator = RichTextMentionValidator> extends FoundationElement implements Subscriber {
    /**
     * @internal
     */
    readonly mentionInternals: MentionInternals;
    /**
     * A regex used to extract user ID from user key (url) while parsing and serializing a markdown.
     */
    pattern?: string;
    /**
     * @public
     */
    buttonLabel?: string;
    /** @internal */
    mappingNotifiers: Notifier[];
    /** @internal */
    mappingElements: Mapping<unknown>[];
    /**
     * @public
     */
    checkValidity(): boolean;
    /**
     * @public
     */
    get validity(): RichTextMentionValidity;
    /**
     * @internal
     */
    emitMentionUpdate(filter: string): void;
    /**
     * @internal
     */
    handleChange(source: unknown, args: unknown): void;
    protected abstract getObservedMappingProperty(): string[];
    protected abstract getMentionInternalsOptions(): MentionInternalsOptions<TValidator>;
    protected abstract createMappingConfig(mapping: Mapping<unknown>): MappingConfig;
    private getMappingConfigs;
    private updateMappingConfigs;
    private mappingElementsChanged;
    private patternChanged;
    private buttonLabelChanged;
    private removeMappingElementObservers;
    private observeMappingElements;
}
