import { type TemplateResult, nothing } from 'lit';
import { ApiEditor } from './ApiEditor.js';
import type { ListAction, ApiModel, DomainEntity, ExposedEntity, DomainProperty } from '@api-client/core/browser.js';
import type { TabSelectionDetail } from '../../md/tabs/ui-tabs.js';
import type { UiSelectChangeEvent } from '../../md/select/ui-select.js';
import type { UiListSelection } from '../../md/list/ui-list.js';
export default class ApiListActionEditor extends ApiEditor {
    /**
     * Computed exposed entity being edited.
     */
    accessor exposed: ExposedEntity | undefined;
    /**
     * Computed domain entity that corresponds to the exposed entity being edited.
     */
    accessor entity: DomainEntity | undefined;
    /**
     * Computed list action definition being edited.
     */
    accessor action: ListAction | undefined;
    /**
     * All the indexed properties of the entity.
     */
    accessor indexed: DomainProperty[];
    /**
     * When true, shows a close button in the editor header.
     * @attribute
     */
    accessor showCloseButton: boolean;
    /**
     * The currently active tab index.
     */
    accessor activeTab: number;
    protected setupModel(model?: ApiModel, domainKey?: string): void | Promise<void>;
    protected handleCloseButtonClick(): void;
    /**
     * Handles tab change events.
     */
    protected handleTabChange(e: CustomEvent<TabSelectionDetail>): void;
    protected handlePaginationStrategyChange(e: CustomEvent<UiSelectChangeEvent>): void;
    /**
     * Sets the pagination strategy for the action.
     * @param strategy The strategy to set on the action. Must be `offset` or `cursor`.
     */
    setPaginationStrategy(strategy: string): void;
    protected handleDefaultPageSizeChange(e: Event): void;
    /**
     * Sets the default page size for the action's pagination.
     * @param pageSize The page size to set. Must be between 1 and 100.
     */
    setDefaultPageSize(pageSize: number): void;
    protected handleAddFilterField(e: CustomEvent<UiListSelection>): void;
    protected handleRemoveField(fieldKey: string, type: 'filter' | 'sort'): void;
    addFilterField(fieldKey: string): void;
    removeFilterField(fieldKey: string): void;
    protected handleAddSortField(e: CustomEvent<UiListSelection>): void;
    addSortField(fieldKey: string): void;
    removeSortField(fieldKey: string): void;
    protected handleConfigurationChange(): void;
    protected render(): TemplateResult | typeof nothing;
    /**
     * Renders a template of the editor header.
     */
    protected renderHeader(): TemplateResult;
    /**
     * Renders the tabs navigation.
     */
    protected renderTabs(): TemplateResult;
    /**
     * Renders the content for the currently active tab.
     */
    protected renderTabContent(): TemplateResult | typeof nothing;
    /**
     * Renders the Configuration tab content.
     */
    protected renderConfigurationTab(): TemplateResult | typeof nothing;
    /**
     * Renders the Access tab content.
     */
    protected renderAccessTab(): TemplateResult;
    /**
     * Renders the Limits tab content.
     */
    protected renderLimitsTab(): TemplateResult;
    /**
     * Renders the close button if the `showCloseButton` flag is set.
     */
    protected renderCloseButton(): TemplateResult | typeof nothing;
    protected renderPaginationConfiguration(action: ListAction): TemplateResult;
    protected renderFiltersConfiguration(action: ListAction, indexed: DomainProperty[]): TemplateResult;
    protected renderFieldListItem(fieldKey: string, indexed: DomainProperty[], type: 'filter' | 'sort'): TemplateResult;
    protected renderSortConfiguration(action: ListAction, indexed: DomainProperty[]): TemplateResult;
}
//# sourceMappingURL=ApiListActionEditor.d.ts.map