import { InjectionToken, TemplateRef } from '@angular/core';
import { AbstractControl, type AbstractControlDirective } from '@angular/forms';
import * as i0 from "@angular/core";
export interface INgxMatErrorDef {
    ngxMatErrorDefFor: string;
    ngxMatErrorDefWithControl?: AbstractControlDirective | AbstractControl | string | null;
    template: TemplateRef<any>;
    control?: AbstractControl;
}
/**
 * Lightweight injection token. When NgxMatErrorDef is not used, only this token will remain, the directive will be tree-shaken.
 */
export declare const NGX_MAT_ERROR_DEF: InjectionToken<INgxMatErrorDef>;
export declare class NgxMatErrorDef implements INgxMatErrorDef {
    /**
     * Specify the error key to be used for error matching.
     * @required
     */
    ngxMatErrorDefFor: string;
    /**
     * Specify the control to be used for error matching.
     * @optional
     */
    ngxMatErrorDefWithControl?: AbstractControlDirective | AbstractControl | string | null;
    readonly template: TemplateRef<any>;
    private readonly controlContainer;
    get control(): AbstractControl | undefined;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatErrorDef, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NgxMatErrorDef, "[ngxMatErrorDef]", never, { "ngxMatErrorDefFor": { "alias": "ngxMatErrorDefFor"; "required": true; }; "ngxMatErrorDefWithControl": { "alias": "ngxMatErrorDefWithControl"; "required": false; }; }, {}, never, never, true, never>;
}
