import { nothing, TemplateResult } from 'lit';
import { type IHttpAssertion } from '@api-client/core/models/http-flows/HttpAssertion.js';
import { type IHttpStep } from '@api-client/core/models/http-flows/HttpStep.js';
import { HttpFlowsUi, StepsTarget } from './HttpFlowsUi.js';
import { UiDialogClosingReason } from '../../md/dialog/internals/Dialog.js';
import '../../md/button/ui-button.js';
import '../../md/switch/ui-switch.js';
import '../../md/dialog/ui-dialog.js';
import '../../md/divider/ui-divider.js';
/**
 * @fires change When the model change
 */
export default class HttpAssertions extends HttpFlowsUi {
    /**
     * The list of assertions.
     * This is a live list. All changes are propagated in the model.
     */
    accessor model: IHttpAssertion[];
    /**
     * Adds a new empty assertion to the model.
     * Note, this function won't notify the parent element
     * about the change as empty rules can be discarded.
     */
    addAssertion(): void;
    /**
     * Removes an assertion at specified index.
     * @param index The index of the assertion in the `model` to remove.
     */
    removeAssertion(index: number): void;
    /**
     * Toggles the enabled state of the assertion.
     * @param index The index of the assertion on the `model` array
     * @param value The `enabled` value.
     */
    toggleAssertion(index: number, value: boolean): void;
    protected handleAdd(): void;
    protected handleRemove(e: Event): void;
    protected handleToggle(e: Event): void;
    protected getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined;
    protected stepFromChangeEvent(e: Event): IHttpStep | undefined;
    protected handleRenameAssertion(e: Event): void;
    protected handleRenameDialogResult(e: CustomEvent<UiDialogClosingReason>): void;
    protected render(): TemplateResult;
    protected renderActionButtons(): TemplateResult;
    protected renderAssertions(): TemplateResult;
    protected renderEditor(): TemplateResult;
    protected renderEmptyMessage(): TemplateResult;
    protected renderList(model: IHttpAssertion[]): TemplateResult;
    protected renderAssertion(item: IHttpAssertion, index: number): TemplateResult;
    protected renderAssertionDescription(item: IHttpAssertion): TemplateResult | typeof nothing;
    protected renderToggleButton(item: IHttpAssertion, assertionIndex: number): TemplateResult;
    protected renderRenameAssertion(assertionIndex: number): TemplateResult;
    protected renderDeleteAssertion(assertionIndex: number): TemplateResult;
    protected renderRenameAssertionDialog(): TemplateResult;
}
//# sourceMappingURL=HttpAssertions.element.d.ts.map