import { TemplateResult, CSSResult } from 'lit';
import { IFile, ISpace } from '@api-client/core/build/browser.js';
import { ApplicationInit, ApplicationScreen } from '../ApplicationScreen.js';
import { FilesPage } from './pages/Files.page.js';
import { SharedPage } from './pages/Shared.page.js';
import { TrashPage } from './pages/Trash.page.js';
import { SettingsPage } from './pages/Settings.page.js';
import type { IRoute, IRouteResult } from '../../mixins/RouteMixin.js';
import type { HttpClientStoreBindings } from '../../bindings/base/HttpClientStoreBindings.js';
import type { NavigationBindings } from '../../bindings/base/NavigationBindings.js';
import type { FileBindings } from '../../bindings/base/FileBindings.js';
import '../../define/ui/ui-button.js';
import '../../define/app-navigation-item.js';
import '../../define/ui/ui-icon.js';
import '../../define/ui/ui-icon-button.js';
import '../../define/ui/ui-text-field.js';
import '../../define/ui/ui-dropdown-list.js';
import '../../define/ui/ui-divider.js';
import '../../define/http/certificate-add.js';
export interface PageInit extends ApplicationInit {
    idb: HttpClientStoreBindings;
    navigation: NavigationBindings;
    files: FileBindings;
}
/**
 * API Client is the entry point to the suite.
 * It renders the list of user files, allows to configure a connection to a store,
 * open user files in the corresponding application, or open
 * an independent application.
 */
export default class ApiClientScreen extends ApplicationScreen {
    static get routes(): IRoute[];
    static get styles(): CSSResult[];
    /**
     * Whether the current user has spaces defined in the store.
     * When not, it runs the start screen configuring workspaces.
     */
    get hasSpaces(): boolean;
    /**
     * @The list of user spaces.
     */
    protected spaces: ISpace[];
    /**
     * The pagination cursor for workspaces.
     * As long there's a cursor, there are more spaces to request.
     */
    protected spacesCursor?: string;
    /**
     * The currently selected space.
     */
    selectedSpace?: string;
    /**
     * The definition of the selected space.
     */
    get currentSpace(): ISpace | undefined;
    protected files: FilesPage;
    protected shared: SharedPage;
    protected trash: TrashPage;
    protected settings: SettingsPage;
    spacesChannel: BroadcastChannel;
    trashChannel: BroadcastChannel;
    constructor(init: PageInit);
    initialize(): Promise<void>;
    reset(): void;
    storeChanged(): Promise<void>;
    protected setupWorkspace(key?: string): Promise<void>;
    protected readSpaceKey(): Promise<string | undefined>;
    protected createLastSpaceStoreKey(): Promise<string | undefined>;
    protected readLastSpaceKey(): Promise<string | undefined>;
    protected deleteLastSpaceKey(): Promise<void>;
    protected storeLastSpaceKey(spaceKey: string): Promise<void>;
    selectWorkspace(key?: string): void;
    resetStoreObservers(): Promise<void>;
    protected readSpaces(): Promise<void>;
    protected trashMessageHandler(e: MessageEvent): void;
    protected spacesMessageHandler(e: MessageEvent): void;
    handleSpaceCreated(space: ISpace): void;
    handleSpaceDeleted(key: string): void;
    protected resetRoute(): void;
    protected filesRoute(info: IRouteResult): void;
    protected sharedRoute(info: IRouteResult): void;
    protected trashRoute(): void;
    protected settingsRoute(): void;
    protected addCertRoute(): void;
    protected handleCertificateClose(): void;
    protected mainNavHandler(e: Event): void;
    protected workspaceCreateFormHandler(e: SubmitEvent): void;
    protected addWorkspace(name: string): Promise<void>;
    protected deleteSpace(key: string): Promise<void>;
    protected workspaceSelectHandler(e: CustomEvent): void;
    openNewWorkspaceDialog(): void;
    openDeleteWorkspaceDialog(): void;
    cancelCreateWorkspaceDialog(): void;
    cancelDeleteWorkspaceDialog(): void;
    protected createWorkspaceHandler(e: SubmitEvent): void;
    protected deleteWorkspaceHandler(): Promise<void>;
    closeDialog(id: string): void;
    openDialog(id: string, modal?: boolean): void;
    freezeApp(): void;
    unfreezeApp(): void;
    submitOnEnter(e: KeyboardEvent): void;
    renameFile(file: IFile, name: string): Promise<void>;
    pageTemplate(): TemplateResult;
    protected navigationTemplate(): TemplateResult;
    protected headerTemplate(): TemplateResult;
    protected renderWorkspaceSelector(space: ISpace): TemplateResult;
    protected mainTemplate(): TemplateResult;
    protected renderPage(): TemplateResult;
    protected renderModelsPage(): TemplateResult;
    protected render404(): TemplateResult;
    protected spacesSetupTemplate(): TemplateResult;
    protected renderCreateWorkspaceDialog(): TemplateResult;
    protected renderDeleteWorkspaceDialog(): TemplateResult;
    protected renderAddCertificate(): TemplateResult;
}
//# sourceMappingURL=ApiClient.screen.d.ts.map