import { TemplateResult } from 'lit';
import { ApiDefinitions, AmfShapes } from '@api-client/core/build/browser.js';
import type { OperationParameter, ShapeTemplateOptions, ParameterRenderOptions } from '../types.js';
import type { SupportedInputTypes } from '../../types/input.js';
import type { UiDropdownListSelection } from '../../ui/list/UiDropdownList.js';
import '../../define/ui/ui-icon.js';
import '../../define/ui/ui-text-field.js';
import '../../define/ui/ui-list.js';
import '../../define/ui/ui-list-item.js';
import '../../define/ui/ui-dropdown-list.js';
import '../../define/ui/ui-checkbox.js';
import '../../define/ui/ui-icon-button.js';
export interface AmfParametersInit {
    globalCache?: boolean;
}
/**
 * A class that works with UI editor that capture user input for AMF parameters.
 *
 * @fires paramchange - When a parameter value change. The detail object is the key value of changed parameter.
 * @fires render - When the UI should re-render.
 * @fires change - When the UI should notify the hosting application about the change.
 */
export declare class AmfParameters extends EventTarget {
    parametersValue: OperationParameter[];
    nilValues: string[];
    target: HTMLElement;
    globalCache: boolean;
    /**
     * @param target The element that initializes this class.
     */
    constructor(target: HTMLElement, init?: AmfParametersInit);
    protected paramChanged(key: string): void;
    protected notifyUpdate(): void;
    protected notifyChange(): void;
    /**
       * Clears previously set values in the cache storage.
       */
    clearCache(): void;
    addArrayValueHandler(e: Event): void;
    /**
     * Reads the value to be set on an input.
     *
     * @param parameter
     * @param schema
     * @param isArray Whether the value should be read for an array.
     * @returns The value to set on the input. Note, it is not cast to the type.
     */
    readInputValue(parameter: ApiDefinitions.IApiParameter, schema: AmfShapes.IApiScalarShape, isArray?: boolean): unknown;
    protected paramChangeHandler(e: Event): void;
    protected booleanHandler(e: Event): void;
    /**
     * A handler for the remove param button click.
     */
    protected deleteParamHandler(e: Event): void;
    protected enumSelectionHandler(e: CustomEvent<UiDropdownListSelection>): void;
    /**
     * Handler for the nil value toggle.
     */
    protected nilHandler(e: Event): void;
    /**
     * @param param The parameter to render.
     * @param opts Render options
     * @returns The template for the request parameter form control.
     */
    parameterTemplate(param: OperationParameter, opts?: ParameterRenderOptions): TemplateResult | string;
    /**
     * @param parameter
     * @param schema
     * @param opts Internal Process options
     * @returns The template for the request parameter form control.
     */
    parameterSchemaTemplate(parameter: ApiDefinitions.IApiParameter, schema: AmfShapes.IShapeUnion, opts?: ShapeTemplateOptions): TemplateResult | string;
    /**
     * @param parameter
     * @param schema
     * @param opts
     * @returns The template for the schema parameter.
     */
    scalarShapeTemplate(parameter: ApiDefinitions.IApiParameter, schema: AmfShapes.IApiScalarShape, opts?: ShapeTemplateOptions): TemplateResult | string;
    /**
     * Corrects the `http://www.w3.org/2001/XMLSchema#dateTime` schema with the `date-time` or `rfc3339` formats
     * to remove the last `.ZZZ` part which is not recognizable by the `<input>` element.
     */
    protected correctDateTimeParameter(schema: AmfShapes.IApiScalarShape, value: unknown): string | unknown;
    /**
     * @param parameter
     * @param schema
     * @param type The input type.
     * @param opts
     * @returns A template for an input form item for the given type and schema
     */
    textInputTemplate(parameter: ApiDefinitions.IApiParameter, schema: AmfShapes.IApiScalarShape, type?: SupportedInputTypes, opts?: ShapeTemplateOptions): TemplateResult;
    /**
     * @param paramId The ApiDefinitions.IApiParameter id.
     * @param arrayIndex When this is an array item, the index on the array.
     * @returns The template for the param remove button.
     */
    deleteParamTemplate(paramId: string, arrayIndex?: number): TemplateResult;
    /**
     * @param parameter
     * @param schema
     * @param opts
     * @returns The template for the enum input.
     */
    enumTemplate(parameter: ApiDefinitions.IApiParameter, schema: AmfShapes.IApiScalarShape, opts?: ShapeTemplateOptions): TemplateResult | string;
    protected renderEnumItem(item: AmfShapes.IApiScalarNode): TemplateResult;
    /**
     * @returns The template for the checkbox input.
     */
    booleanTemplate(parameter: ApiDefinitions.IApiParameter, schema: AmfShapes.IApiScalarShape, opts?: ShapeTemplateOptions): TemplateResult | string;
    /**
     * @returns The template for the nil checkbox input.
     */
    nillInputTemplate(parameter: ApiDefinitions.IApiParameter): TemplateResult | string;
    /**
     * or now we do not support union shapes. There's no way to learn how to serialize
     * the Node shape to a string.
     * @returns {TemplateResult|string} The template for the node shape.
     */
    nodeShapeTemplate(): TemplateResult | string;
    /**
     * @returns The template for the union shape.
     */
    unionShapeTemplate(parameter: ApiDefinitions.IApiParameter, schema: AmfShapes.IApiUnionShape): TemplateResult | string;
    /**
     * This situation makes not sense as there's no mechanism to describe how to
     * put a file into a path, query, or headers.
     * @returns The template for the file shape.
     */
    fileShapeTemplate(): TemplateResult | string;
    /**
     * For now we do not support union shapes. There's no way to learn how to serialize
     * the Schema shape to a string.
     * @returns The template for the schema shape.
     */
    schemaShapeTemplate(): TemplateResult | string;
    /**
     * @returns The template for the array shape.
     */
    arrayShapeTemplate(parameter: ApiDefinitions.IApiParameter, schema: AmfShapes.IApiArrayShape): TemplateResult | string;
    /**
     * @returns The template for the tuple shape.
     */
    tupleShapeTemplate(parameter: ApiDefinitions.IApiParameter, schema: AmfShapes.IApiTupleShape): TemplateResult | string;
    /**
     * @returns The template for the Any shape.
     */
    anyShapeTemplate(parameter: ApiDefinitions.IApiParameter, schema: AmfShapes.IApiAnyShape): TemplateResult | string;
    /**
     * @param id The id of the parameter to add the value to.
     * @returns The template for the adding an array item button
     */
    addArrayItemTemplate(id: string): TemplateResult | string;
    /**
     * Handler for a custom parameter input change.
     */
    protected customParamChangeHandler(e: Event): void;
    /**
     * @param param The parameter to render
     * @returns The template for a custom parameter
     */
    protected customParamTemplate(param: OperationParameter): TemplateResult;
}
//# sourceMappingURL=AmfParameters.d.ts.map