import { Type } from '@angular/core';
import { FieldType } from '@ngx-formly/core';
import { ExtensionFactory, GenericHookOptions, HookValueType } from '../../common/extension-hooks';
import { FilterMapper } from '../data-grid.model';
import * as i0 from "@angular/core";
/**
 * An extension HOOK can use either a pure value:
 * ```typescript
 *  { provide: HOOK_X, useValue: { ...hookValue }, multi: true }
 * ```
 *
 * Or an array to directly register multiple:
 * ```typescript
 *  { provide: HOOK_X, useValue: [{ ...hookValues }], multi: true }
 * ```
 *
 *  * Or a class to register:
 * ```typescript
 *  { provide: HOOK_X, useExisting: BooleanFilterMapper, multi: true }
 * ```
 *
 * Or an ExtensionFactory {@link ExtensionFactory}:
 * ```typescript
 *  { provide: HOOK_X, useFactory: (route) => doSomethingAsync(route), multi: true }
 * ```
 */
export type FilterMapperExtension = FilterMapper | FilterMapper[] | ExtensionFactory<FilterMapper>;
/**
 * You can either provide a single `FilterMapper` as parameter:
 * ```typescript
 *  hookFilterMapper(...)
 * ```
 *
 * Or an array to directly register multiple:
 * ```typescript
 *  hookFilterMapper([...])
 * ```
 *
 * Or you provide an Service that implements `FilterMapper`
 * ```typescript
 *  export class MyFilterMapper implements FilterMapper {...}
 *  ...
 *  hookFilterMapper(MyFilterMapper)
 * ```
 * A typed alternative to using `HOOK_FILTER_MAPPER`.
 * @param mapper A filter mapper, e.g. `BooleanFilterMapper`, or `ExtensionFactory` to be provided.
 * @param options If this is a multi provider or not (defaults to true) and provider type definition (defaults to ClassProvider) - `HookOptions`.
 * @returns An `Provider` to be provided in your module.
 */
export declare function hookFilterMapper(mapper: HookValueType<FilterMapper>, options?: Partial<GenericHookOptions>): import("@angular/core").ValueProvider | import("@angular/core").ClassProvider | import("@angular/core").ExistingProvider;
export declare class FilterMapperFactory {
    map: object;
    constructor(fieldMappers: Array<FilterMapper>);
    get(type: string | Type<FieldType>): FilterMapper;
    static ɵfac: i0.ɵɵFactoryDeclaration<FilterMapperFactory, [{ optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<FilterMapperFactory>;
}
//# sourceMappingURL=filter-mapper.factory.d.ts.map