import { PropertyValues, TemplateResult } from 'lit';
import { type IUrlParamPart, UrlProcessor } from '@api-client/core/lib/parsers/UrlProcessor.js';
import ApiElement from '../ApiElement.js';
import '../../md/button/ui-button.js';
import '../../md/icon-button/ui-icon-button.js';
import '../../md/dropdown-list/ui-dropdown-list.js';
import '../../md/list/ui-list.js';
import '../../md/list/ui-list-item.js';
import '../../md/switch/ui-switch.js';
import '../../md/divider/ui-divider.js';
import '../../md/icons/ui-icon.js';
import '../../md/text-field/ui-filled-text-field.js';
export default class UrlParamsForm extends ApiElement {
    #private;
    protected parser: UrlProcessor;
    /**
     * When set the editor is in read only mode.
     * @attribute
     */
    accessor readOnly: boolean;
    /**
     * Whether the text editor is rendered instead of the form.
     * @attribute
     */
    accessor text: boolean;
    /**
     * The current value of the editor.
     * @attribute
     */
    get value(): string;
    set value(value: string);
    protected accessor textValue: string | undefined;
    protected update(cp: PropertyValues<this>): void;
    protected setupParser(value: string): void;
    protected handleAdd(): void;
    addParameter(): void;
    protected focusLast(): Promise<void>;
    protected handleOption(e: CustomEvent): void;
    /**
     * Toggles the state between form and text editors.
     */
    toggle(): void;
    /**
     * Removes all parameters.
     */
    clear(): void;
    /**
     * Updates name/value of a parameter on a specific index.
     */
    updateProperty(index: number, field: 'name' | 'value', value: string): void;
    /**
     * Removes a parameter from an index.
     */
    removeProperty(index: number): void;
    /**
     * Toggles enabled state of a parameter.
     */
    toggleProperty(index: number, enabled: boolean): void;
    /**
     * Encodes all parameters.
     */
    encodeProperties(): void;
    /**
     * Decodes all parameters.
     */
    decodeProperties(): void;
    protected updateValue(): void;
    protected handleNameChange(e: Event): void;
    protected handleValueChange(e: Event): void;
    protected handleRemove(e: Event): void;
    protected handleToggle(e: Event): void;
    protected handleEncode(): void;
    protected handleDecode(): void;
    protected handleText(e: Event): void;
    protected render(): TemplateResult;
    protected renderActionButtons(): TemplateResult;
    protected renderEditor(): TemplateResult;
    protected renderText(): TemplateResult;
    protected renderList(): TemplateResult;
    protected renderEmptyMessage(): TemplateResult;
    protected renderParams(items: IUrlParamPart[]): TemplateResult;
    protected renderParam(item: IUrlParamPart, index: number): TemplateResult;
    protected renderToggleButton(item: IUrlParamPart, index: number): TemplateResult;
    protected renderDeleteParameter(index: number): TemplateResult;
    protected renderNameField(item: IUrlParamPart, index: number): TemplateResult;
    protected renderValueField(item: IUrlParamPart, index: number): TemplateResult;
}
//# sourceMappingURL=UrlParamsForm.d.ts.map