import { ElementRef } from '@angular/core';
import { NgPopoverRef } from 'ng-overlay-container';
import { AbstractPopoverRefDirective } from '../popover/abstract.popover.ref.directive';
import { FilterSource, PresetFilterSource } from '@dereekb/rxjs';
import { Maybe } from '@dereekb/util';
import { DbxFilterComponentConfig } from './filter.config';
import * as i0 from "@angular/core";
export type DbxFilterButtonConfig<F extends object> = DbxFilterComponentConfig<F>;
export type DbxFilterButtonConfigWithCustomFilter<F extends object, CF extends FilterSource<F> = FilterSource<F>> = Omit<DbxFilterComponentConfig<F, any, CF, any>, 'presetFilter' | 'presetFilterComponentConfig'>;
export type DbxFilterButtonConfigWithPresetFilter<F extends object, PF extends PresetFilterSource<F, any> = PresetFilterSource<F, any>> = Omit<DbxFilterComponentConfig<F, any, any, PF>, 'customFilter' | 'customFilterComponentConfig'>;
export declare abstract class AbstractFilterPopoverButtonDirective<F extends object> extends AbstractPopoverRefDirective<unknown, unknown> {
    private readonly popupService;
    readonly config: import("@angular/core").InputSignal<Maybe<DbxFilterComponentConfig<F, any, any, any>>>;
    protected _makePopoverRef(origin?: ElementRef): NgPopoverRef<unknown, unknown>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFilterPopoverButtonDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractFilterPopoverButtonDirective<any>, never, never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
}
