import { InjectionToken, Provider, TemplateRef } from '@angular/core';
import { KbqFilterBar } from './filter-bar';
/**default configuration of filter-bar */
export declare const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION: {
    reset: {
        buttonName: string;
    };
    search: {
        tooltip: string;
        placeholder: string;
    };
    filters: {
        defaultName: string;
        saveNewFilterTooltip: string;
        searchPlaceholder: string;
        searchEmptyResult: string;
        saveAsNewFilter: string;
        saveChanges: string;
        saveAsNew: string;
        change: string;
        resetChanges: string;
        remove: string;
        name: string;
        error: string;
        errorHint: string;
        saveButton: string;
        cancelButton: string;
    };
    add: {
        tooltip: string;
    };
    pipe: {
        clearButtonTooltip: string;
        removeButtonTooltip: string;
        applyButton: string;
        emptySearchResult: string;
        selectAll: string;
    };
    datePipe: {
        customPeriod: string;
        customPeriodFrom: string;
        customPeriodTo: string;
        customPeriodErrorHint: string;
        backToPeriodSelection: string;
    };
};
/** Injection Token for providing configuration of filter-bar */
export declare const KBQ_FILTER_BAR_CONFIGURATION: InjectionToken<unknown>;
/** Injection Token for providing pipes in filter-bar */
export declare const KBQ_FILTER_BAR_PIPES: InjectionToken<any>;
/** Utility provider for `KBQ_FILTER_BAR_PIPES`. */
export declare const kbqFilterBarPipesProvider: () => Provider;
/** list of pipe types available out of the box */
export declare enum KbqPipeTypes {
    ReadOnly = "readonly",
    Text = "text",
    Select = "select",
    TreeSelect = "tree-select",
    MultiSelect = "multiselect",
    MultiTreeSelect = "multi-tree-select",
    Date = "date",
    Datetime = "datetime"
}
export type KbqPipeType = `${KbqPipeTypes}` | string;
/** list of pipes available out of the box. */
export declare const defaultFilterBarPipes: [string, unknown][];
export interface KbqDateTimeValue {
    name?: string;
    start?: string;
    end?: string;
}
export interface KbqSelectValue {
    name: string;
    value: unknown;
}
export interface KbqFilter {
    name: string;
    pipes: KbqPipe[];
    readonly: boolean;
    disabled: boolean;
    changed: boolean;
    saved: boolean;
}
export interface KbqPipe {
    name: string;
    id?: string | number;
    type: KbqPipeType;
    value: unknown | null;
    search?: boolean;
    selectAll?: boolean;
    openOnAdd?: boolean;
    openOnReset?: boolean;
    /**
     * This is special logic that unselect all items when all selected because "all selected = nothing selected".
     * Default is true
     * */
    selectedAllEqualsSelectedNothing?: boolean;
    /** @deprecated use cleanable = false and removable = false instead */
    required?: boolean;
    cleanable: boolean;
    removable: boolean;
    disabled: boolean;
}
export interface KbqPipeData<V> extends KbqPipe {
    value: V | null;
}
export interface KbqPipeTemplate extends Omit<KbqPipe, 'value'> {
    values?: unknown[];
    valueTemplate?: TemplateRef<any> | string;
}
export interface KbqSaveFilterError {
    text?: string;
    nameAlreadyExists?: boolean;
}
/** saving statuses for KbqSaveFilterEvent */
export declare enum KbqSaveFilterStatuses {
    OnlyChanges = "onlyChanges",
    NewName = "newName",
    NewFilter = "newFilter"
}
export interface KbqSaveFilterEvent {
    filter: KbqFilter;
    filterBar: KbqFilterBar;
    status?: KbqSaveFilterStatuses;
}
/** Flattened node */
export declare class KbqTreeSelectFlatNode {
    name: string;
    value: unknown;
    level: number;
    expandable: boolean;
    parent?: KbqTreeSelectFlatNode;
}
export interface KbqTreeSelectNode {
    children: KbqTreeSelectNode[] | null;
    name: string;
    value: unknown;
}
/**
 * Build the file structure tree. The `value` is the Json object, or a sub-tree of a Json object.
 * The return value is the list of extends `KbqTreeSelectNode`.
 */
export declare function kbqBuildTree<T extends KbqTreeSelectNode>(value: any, level: number): T[];
