import { h } from 'preact';
import type { UnknownProviderPlugin, PartialTreeFolderNode, PartialTreeFile, PartialTree, Body, Meta } from '@uppy/core';
import type { CompanionFile } from '@uppy/utils/lib/CompanionFile';
import type { I18n } from '@uppy/utils/lib/Translator';
export declare function defaultPickerIcon(): h.JSX.Element;
type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
export interface Opts<M extends Meta, B extends Body> {
    provider: UnknownProviderPlugin<M, B>['provider'];
    viewType: 'list' | 'grid';
    showTitles: boolean;
    showFilter: boolean;
    showBreadcrumbs: boolean;
    loadAllFiles: boolean;
    renderAuthForm?: (args: {
        pluginName: string;
        i18n: I18n;
        loading: boolean | string;
        onAuth: (authFormData: unknown) => Promise<void>;
    }) => h.JSX.Element;
    virtualList: boolean;
}
type PassedOpts<M extends Meta, B extends Body> = Optional<Opts<M, B>, 'viewType' | 'showTitles' | 'showFilter' | 'showBreadcrumbs' | 'loadAllFiles' | 'virtualList'>;
type RenderOpts<M extends Meta, B extends Body> = Omit<PassedOpts<M, B>, 'provider'>;
/**
 * Class to easily generate generic views for Provider plugins
 */
export default class ProviderView<M extends Meta, B extends Body> {
    #private;
    static VERSION: any;
    plugin: UnknownProviderPlugin<M, B>;
    provider: UnknownProviderPlugin<M, B>['provider'];
    opts: Opts<M, B>;
    isHandlingScroll: boolean;
    lastCheckbox: string | null;
    constructor(plugin: UnknownProviderPlugin<M, B>, opts: PassedOpts<M, B>);
    resetPluginState(): void;
    tearDown(): void;
    setLoading(loading: boolean | string): void;
    cancelSelection(): void;
    openFolder(folderId: string | null): Promise<void>;
    /**
     * Removes session token on client side.
     */
    logout(): Promise<void>;
    handleAuth(authFormData?: unknown): Promise<void>;
    handleScroll(event: Event): Promise<void>;
    validateSingleFile: (file: CompanionFile) => string | null;
    donePicking(): Promise<void>;
    toggleCheckbox(ourItem: PartialTreeFolderNode | PartialTreeFile, isShiftKeyPressed: boolean): void;
    getDisplayedPartialTree: () => (PartialTreeFile | PartialTreeFolderNode)[];
    validateAggregateRestrictions: (partialTree: PartialTree) => string | null;
    render(state: unknown, viewOptions?: RenderOpts<M, B>): h.JSX.Element;
}
export {};
//# sourceMappingURL=ProviderView.d.ts.map