import { IFile, ListFileKind } from "@api-client/core/build/browser.js";
import { CSSResult, TemplateResult } from "lit";
import ApiElement from "../ApiElement.js";
import type UiList from "../../ui/list/UiList.js";
import type { UiListSelection } from "../../ui/list/UiList.js";
import { FileSystem } from "../../store/FileSystem.js";
import '../../define/ui/ui-divider.js';
import '../../define/ui/ui-button.js';
import '../../define/ui/ui-icon-button.js';
import '../../define/ui/ui-icon.js';
import '../../define/ui/ui-list.js';
import '../../define/ui/ui-list-item.js';
import '../../define/ui/ui-progress.js';
export interface FilePickerClosingReason {
    /**
     * Whether the picker was canceled.
     */
    canceled: boolean;
    /**
     * The file selected by the user. This is always and only selected when the `canceled` is false.
     */
    file?: IFile;
}
/**
 * A portable element that allow to pick a file from the Store.
 *
 * @fires close - When a file is selected or the user cancelled the dialog. The detail object is the picked file object. Note, this event bubbles.
 * @fires querycomplete - When the page of results was loaded.
 */
export default class FilePicker extends ApiElement {
    static get styles(): CSSResult[];
    /**
     * The key of the parent folder to query for files.
     * @attribute
     */
    get folder(): string | undefined;
    set folder(value: string | undefined);
    /**
     * The page limit. Defaults to the store defaults.
     * @attribute
     */
    set limit(value: number | undefined);
    get limit(): number | undefined;
    /**
     * The timeout for the page query debouncer.
     * @attribute
     */
    get debounceTimeout(): number;
    set debounceTimeout(value: number);
    /**
     * The list of file kinds to list.
     * Folders are always included.
     */
    get kinds(): ListFileKind[] | undefined;
    set kinds(value: ListFileKind[] | undefined);
    protected list?: UiList;
    /**
     * The currently selected in the picker file.
     */
    protected selectedFile?: IFile;
    errorMessage?: string;
    /**
     * When set it does not query for files when attached to the DOM.
     * It will still query for files when attributes change. This is primarily used in tests.
     * @attribute
     */
    manualQuery?: boolean;
    get selectedKey(): string | undefined;
    fs: FileSystem;
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    focus(options?: FocusOptions | undefined): void;
    protected handleFileSelect(e: CustomEvent<UiListSelection>): void;
    protected handleParentUp(): void;
    protected notifyClose(canceled: boolean): void;
    protected handleSelect(): void;
    protected handleCancel(): void;
    protected handleListScroll(e: Event): void;
    protected render(): TemplateResult;
    protected renderHeader(): TemplateResult;
    protected renderFiles(): TemplateResult;
    protected renderEmptyList(): TemplateResult;
    protected renderFileItem(item: IFile): TemplateResult;
    protected renderActions(): TemplateResult;
}
//# sourceMappingURL=FilePicker.element.d.ts.map