import { TemplateResult, CSSResult, PropertyValues } from 'lit';
import { IServer, Server, IProperty } from '@api-client/core/build/browser.js';
import ApiElement from '../ApiElement.js';
import '../../define/ui/ui-text-field.js';
import '../../define/ui/ui-icon.js';
import '../../define/ui/ui-icon-button.js';
export declare const DefaultProtocols: string[];
/**
 * An element to render a view for a server definition with a form to edit it.
 *
 * @fires change - When a value change.
 * @fires delete - When the user requested server definition delete.
 */
export default class ServerEditor extends ApiElement {
    static get styles(): CSSResult[];
    /**
     * The base URI of the server.
     *
     * Note, the URL can contain URI templates (e.g. `http://{host}.api.com/v1`)
     * In this case the variable is replaced with the system or project variables.
     *
     * For simplicity, the `uri` can be the full base URI with protocol, host, and the `basePath`
     *
     * @attribute
     */
    uri?: string;
    /**
     * Usually included in the `uri`. When the `uri` is missing a protocol
     * this is then used.
     *
     * @attribute
     */
    protocol?: string;
    /**
     * The base path for the server. It starts with the `/`.
     * When set, it is appended to the `uri` value.
     *
     * @attribute
     */
    basePath?: string;
    /**
     * Optional description of the server.
     *
     * @attribute
     */
    description?: string;
    /**
     * Optional list of variables to set on the environment.
     * When set it evaluates the final URI value against these properties.
     */
    variables?: IProperty[];
    /**
     * The computed value of the full URI from the values.
     */
    protected valueInternal?: string;
    /**
     * The server logic used with computations.
     */
    protected serverInternal: Server;
    protected protocolInput?: HTMLInputElement;
    protected willUpdate(cp: PropertyValues<this>): void;
    /**
     * Updates the value of the generated base URI.
     * This can be called from the outside of the component to force computation.
     * This is helpful when deep-updating variables.
     */
    generateValue(): void;
    protected setupValue(): void;
    protected updateServer(): void;
    /**
     * Creates a schema for the current values.
     */
    getSchema(): IServer;
    /**
     * Updates name/value of a parameter on a specific index.
     */
    updateProperty(field: 'uri' | 'basePath' | 'protocol', value: string): void;
    protected handleUriChange(e: Event): void;
    protected handleBasePathChange(e: Event): void;
    protected handleProtocolChange(e: Event): void;
    protected handleDelete(): void;
    render(): TemplateResult;
    protected renderHeader(): TemplateResult;
    protected renderUriInput(): TemplateResult;
    protected renderProtocolInput(): TemplateResult;
    protected renderBasePathInput(): TemplateResult;
    protected renderValue(): TemplateResult | string;
    protected renderDeleteButton(): TemplateResult;
}
//# sourceMappingURL=ServerEditor.d.ts.map