import { Permission } from "./permissions.js";
import { Dropzone } from "./aspects/dropzone.js";
import { TreeTrail } from "./aspects/tree-trail.js";
import { Schema } from "./aspects/codex/parts/types.js";
import { GroupConfig, SearchFn, SortFn } from "./types.js";
import { CodexItem } from "./aspects/codex/parts/codex-item.js";
export declare class Group<Sc extends Schema = any> {
    config: GroupConfig<Sc>;
    trail: TreeTrail<Sc>;
    dropzone: Dropzone;
    searchText: import("@benev/slate").Signal<string>;
    selectedFilter: import("@benev/slate").Signal<string>;
    selectedSort: import("@benev/slate").Signal<string>;
    on: {
        newFolder: import("@e280/stz").Sub<[{
            parent: CodexItem<Sc>;
        }]>;
        move: import("@e280/stz").Sub<[{
            item: CodexItem<Sc>;
            target: CodexItem<Sc>;
        }]>;
        delete: import("@e280/stz").Sub<[{
            item: CodexItem<Sc>;
        }]>;
        rename: import("@e280/stz").Sub<[{
            item: CodexItem<Sc>;
            newName: string;
        }]>;
        upload: import("@e280/stz").Sub<[{
            files: File[];
            target: CodexItem<Sc>;
        }]>;
        search: import("@e280/stz").Sub<[{
            terms: string[];
        }]>;
        refresh: import("@e280/stz").Sub<[{}]>;
    };
    constructor(config: GroupConfig<Sc>);
    get permissions(): (item: CodexItem) => Permission;
    getFilterFn(filterKey: string): SearchFn<Sc>;
    getSearchFn(searchText: string): SearchFn<Sc>;
    getSortFn(sortKey: string): SortFn<Sc>;
    sort(items: CodexItem<Sc>[]): CodexItem<Sc>[];
    matches(item: CodexItem<Sc>): boolean;
    move(item: CodexItem<Sc>, target: CodexItem<Sc>): void;
    delete(item: CodexItem<Sc>): void;
    rename(item: CodexItem<Sc>, newName: string): void;
    upload(files: File[], folder: CodexItem<Sc>): void;
    addFolder(parent: CodexItem<Sc>): void;
    components: () => () => /*elided*/ any;
}
