import { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { AggregationsFilter, RecordSearchService } from '../../record-search.service';
import * as i0 from "@angular/core";
export declare class BucketsComponent implements OnInit, OnDestroy, OnChanges {
    protected recordSearchService: RecordSearchService;
    /** Buckets list for aggregation */
    buckets: import("@angular/core").InputSignal<any[]>;
    /** Aggregation key */
    aggregationKey: import("@angular/core").InputSignal<string>;
    /** Bucket size, if not null, reduce displayed items to this size. */
    size: import("@angular/core").InputSignal<number>;
    /** More and less on aggregation content (facet) */
    moreMode: boolean;
    /** Current selected values for the aggregations */
    aggregationsFilters: Array<AggregationsFilter>;
    /** Children of current bucket */
    bucketChildren: any;
    /** Subscription to aggregationsFilters observable */
    private aggregationsFiltersSubscription;
    /** Returns selected filters for the aggregation key. */
    get aggregationFilters(): Array<string>;
    /** Get bucket size. */
    get bucketSize(): number;
    /** Get the number of bucket items with non-zero doc_count. */
    get bucketsLength(): number;
    /** Should display more or less link for a bucket ? */
    get displayMoreAndLessLink(): boolean;
    /**
     * OnInit hook
     *   Subscribe to aggregations filters observable for getting the aggregations filters each time
     *   they will change.
     */
    ngOnInit(): void;
    /**
     * OnChanges hook
     *   Called each time an input property is modified.
     *   If buckets are changed, refresh children buckets.
     * @param changes - bucket changes
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * OnDestroy hook
     *   Unsubscribes from the observable of aggregations filters.
     */
    ngOnDestroy(): void;
    /**
     * Check if a value is present in selected filters.
     * @param value: filter value (could be string, number, ...)
     * @return `true` if value is present in the aggregation filters, `null` otherwise.
     */
    isSelected(value: any): boolean | null;
    /**
     * Do we need to display the children?
     * @return `true` if we want to display the children, `false` otherwise.
     */
    displayChildren(bucket: any): boolean;
    /**
     * Update selected filters by adding or removing the given value and push
     * values to service.
     * @param bucket - string: the selected bucket value (checked OR unchecked)
     */
    updateFilter(bucket: any): void;
    /**
     * Get children buckets
     * @param bucket: parent bucket
     * @return Bucket children list of given bucket
     */
    getBucketChildren(bucket: any): Array<any>;
    static ɵfac: i0.ɵɵFactoryDeclaration<BucketsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BucketsComponent, "ng-core-record-search-aggregation-buckets", never, { "buckets": { "alias": "buckets"; "required": true; "isSignal": true; }; "aggregationKey": { "alias": "aggregationKey"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
}
