import { LitElement, nothing, TemplateResult } from 'lit';
import type { DataCatalogSchemaWithVersion, DataCatalogScope } from '@api-client/core/models/DataCatalog.js';
import type { DataCatalogLifecycle } from '@api-client/core/models/DataCatalogVersion.js';
import type { LiveData } from '../../reactive/LiveData.js';
import type { DataCatalogTableSelectionDetail } from '../../elements/data-table/internals/DataCatalogTable.js';
import '../../md/icons/ui-icon.js';
import '../../md/button/ui-button.js';
import '../../md/button/ui-button-group.js';
import '../../md/icon-button/ui-icon-button.js';
import '../../md/divider/ui-divider.js';
import '../../md/text-field/ui-outlined-text-field.js';
import '../../md/progress/ui-circular-progress.js';
import '../../elements/data-table/data-catalog-table.js';
/**
 * The detail for the data catalog query event.
 */
export interface DataCatalogQueryEventDetail {
    /**
     * The scope of the data catalog query.
     */
    scope?: DataCatalogScope;
    /**
     * The lifecycle of the data catalog query.
     */
    lifecycle?: DataCatalogLifecycle;
    /**
     * The query string to search for. When not set, it resets the search
     * and requests for the regular page.
     */
    query?: string;
}
/**
 * A browser for the data catalog.
 *
 * This element allows the user to browse the data catalog, filter by scope and lifecycle, and search by text.
 * It renders a table with the results and pagination support.
 *
 * @fires CustomEvent<DataCatalogQueryEventDetail> query - Dispatched when the user searches or changes filters.
 * @fires CustomEvent<DataCatalogTableSelectionDetail> select - Dispatched when the selection in the table changes.
 *
 * @csspart loader - The container for the loader.
 * @csspart error - The container for the error message.
 * @csspart controls - The container for the search and filters.
 * @csspart results - The data table element.
 * @csspart search - The search input field.
 * @csspart filters - The container for the filters.
 */
export default class DataCatalogBrowser extends LitElement {
    #private;
    /**
     * When set, the table will render additional column with a button to directly select the item.
     * @attribute
     */
    accessor directSelect: boolean | undefined;
    /**
     * The data to display in the table.
     * @attribute
     */
    accessor items: LiveData<DataCatalogSchemaWithVersion[]> | undefined;
    /**
     * The current state of the browser. The controller managing the query service will set this property
     * depending on the query state.
     * @attribute
     */
    accessor state: 'loading' | 'ready' | 'error';
    /**
     * Required when in error state. Renders the title of the error message.
     * @attribute
     */
    accessor errorTitle: string | undefined;
    /**
     * Required when in error state. Renders the description of the error message.
     * @attribute
     */
    accessor errorMessage: string | undefined;
    /**
     * The currently selected item in the table, if any.
     * @readonly
     */
    get selection(): DataCatalogTableSelectionDetail | undefined;
    /**
     * The current scope of the data catalog query.
     */
    accessor scope: DataCatalogScope | undefined;
    /**
     * The current lifecycle of the data catalog query.
     */
    accessor lifecycle: DataCatalogLifecycle | undefined;
    /**
     * The current query string.
     */
    accessor userQuery: string | undefined;
    /**
     * Dispatches the `query` event with the current filters.
     * The parent application needs to track state of the query. If the `query` event
     * has the `query` property set to `undefined` it means the search should be reset.
     */
    query(): void;
    /**
     * Returns the map of current filters.
     */
    protected getFilters(): DataCatalogQueryEventDetail;
    protected handleSearchKeydown(e: KeyboardEvent): void;
    protected handleFilterClick(e: Event): void;
    protected handleTableSelect(e: CustomEvent<DataCatalogTableSelectionDetail>): void;
    render(): TemplateResult | typeof nothing;
}
//# sourceMappingURL=DataCatalogBrowser.d.ts.map