import { nothing, TemplateResult } from 'lit';
import type { IRequestAuthorization } from '@api-client/core/models/RequestAuthorization.js';
import ApiElement from '../../ApiElement.js';
import '../../../md/icon-button/ui-icon-button.js';
import '../../../md/switch/ui-switch.js';
import '../../../md/icons/ui-icon.js';
/**
 * An authorization element renders an UI allowing the user to provide client credentials.
 *
 * @fires delete - When the user requests to delete this authorization.
 * @fires change - When authorization values have changed via a user interaction.
 */
export declare class Authorization extends ApiElement {
    /**
     * The form element in the UI.
     */
    protected accessor form: HTMLFormElement;
    /**
     * The request authorization object keeping the config.
     * @attribute
     */
    accessor authorization: IRequestAuthorization | undefined;
    /**
     * Whether the UI is in the disabled state.
     * @attribute
     */
    accessor disabled: boolean;
    /**
     * Whether the UI is in the read only state.
     * @attribute
     */
    accessor readOnly: boolean;
    /**
     * Whether the element is currently authorizing the user.
     * @attribute
     */
    accessor authorizing: boolean;
    /**
     * Whether the UI should render the toggle button to toggle the enabled state of the security scheme
     * @attribute
     */
    accessor canToggle: boolean | undefined;
    /**
     * Whether the UI should render the delete button
     * @attribute
     */
    accessor canDelete: boolean | undefined;
    /**
     * Toggles this authorization method enabled state.
     * This does noting when `authorization` is not set.
     */
    toggleEnabled(): void;
    protected handleDelete(): void;
    /**
     * Performs the authorization.
     * This only applies to methods that have any authorization to perform
     * like Oauth 2.
     */
    authorize(): Promise<unknown>;
    /**
     * @returns True when the element is valid.
     */
    checkValidity(): boolean;
    protected renderHeader(): TemplateResult | typeof nothing;
    protected renderAuthInfo(): TemplateResult;
    protected renderToggleSwitch(authorization: IRequestAuthorization): TemplateResult | typeof nothing;
    protected renderTitle(authorization: IRequestAuthorization): TemplateResult;
    protected renderDeleteButton(): TemplateResult | typeof nothing;
}
//# sourceMappingURL=Authorization.d.ts.map