import { type TemplateResult, nothing } from 'lit';
import { ApiEditor } from './ApiEditor.js';
import type { ApiAction, ApiModel, DomainEntity, ExposedEntity } from '@api-client/core/browser.js';
import '../../md/icons/ui-icon.js';
import '../../md/chip/ui-chip.js';
import '../../md/divider/ui-divider.js';
import '../../md/button/ui-button.js';
import '../../md/icon-button/ui-icon-button.js';
import '../../md/dropdown-list/ui-dropdown-list.js';
import '../../md/list/ui-list.js';
import '../../md/list/ui-list-item.js';
/**
 * An entity card displaying information about an exposed entity
 * in the API model, including its domain entity and configured actions.
 *
 * @fires remove - Fired when the user requests to remove the exposed entity.
 * @fires select - Fired when the user clicks on an action chip. The event detail contains the action kind.
 * @fires edit - Fired when the user clicks the Edit button.
 */
export default class ApiModelingEntityCard 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;
    /**
     * Some exposed entities (specifically downstream associated entities) may not have collection actions
     * (when the association is one-to-one and are not linked).
     * When this flag is true, the collection actions section is shown.
     * @attribute
     */
    accessor showCollectionActions: boolean;
    protected setupModel(model?: ApiModel, domainKey?: string): void | Promise<void>;
    protected handleMenuSelect(e: CustomEvent): void;
    protected handleActionChipClick(e: Event): void;
    protected handleEditButtonClick(): void;
    protected render(): TemplateResult | typeof nothing;
    /**
     * Renders the header section of the entity card.
     * @param exposed The exposed entity
     * @param entity The domain entity
     * @returns The template for the header section
     */
    protected renderHeader(exposed: ExposedEntity, entity: DomainEntity): TemplateResult;
    /**
     * Renders the actions section.
     * @param exposed The exposed entity
     * @returns The template for the actions section
     */
    protected renderActions(exposed: ExposedEntity): TemplateResult;
    /**
     * Renders the collection actions section.
     * @param exposed The exposed entity
     * @returns The template for the collection actions section
     */
    protected renderCollectionActions(exposed: ExposedEntity): TemplateResult;
    /**
     * Renders the resource actions section.
     * @param exposed The exposed entity
     * @returns The template for the resource actions section
     */
    protected renderResourceActions(exposed: ExposedEntity): TemplateResult;
    /**
     * Renders a list of API actions.
     * @param actions The list of API actions to render.
     * @param type The type of actions ('collection' or 'resource').
     * @returns A TemplateResult containing the rendered actions list.
     */
    protected renderActionsList(actions: ApiAction[], type: 'collection' | 'resource'): TemplateResult;
}
//# sourceMappingURL=ApiModelingEntityCard.d.ts.map