import { AfterViewInit, ChangeDetectorRef, Injector, OnChanges, SimpleChanges, ViewContainerRef } from '@angular/core';
import { NgControl } from '@angular/forms';
import { MatFormField } from '@angular/material/form-field';
import { Method } from '@rxap/pattern';
import { ControlOption, ControlOptions } from '@rxap/utilities';
import { ExtractOptionsMethodMixin } from '../mixins/extract-options-method.mixin';
import * as i0 from "@angular/core";
export interface OptionsFromMethodTemplateContext {
    $implicit: ControlOption;
}
export interface OptionsFromMethodDirectiveSettings {
}
export interface OptionsFromMethodDirective<Value = any, Parameters = any> extends AfterViewInit, OnChanges, ExtractOptionsMethodMixin {
}
export declare class OptionsFromMethodDirective<Value = any, Parameters = any> implements AfterViewInit, OnChanges {
    static ngTemplateContextGuard(dir: OptionsFromMethodDirective, ctx: any): ctx is OptionsFromMethodTemplateContext;
    parameters?: Parameters;
    resetOnChange?: Value;
    options: ControlOptions | null;
    protected ngControl: NgControl | null;
    protected matFormField: MatFormField | null;
    protected settings: OptionsFromMethodDirectiveSettings;
    protected method: Method<ControlOptions, Parameters>;
    protected readonly viewContainerRef: ViewContainerRef;
    protected readonly injector: Injector;
    protected readonly cdr: ChangeDetectorRef;
    private readonly template;
    ngAfterViewInit(): Promise<void>;
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    protected loadOptions(parameters?: Parameters): Promise<ControlOptions>;
    protected renderTemplate(): void;
    protected setOptions(options: ControlOptions): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<OptionsFromMethodDirective<any, any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<OptionsFromMethodDirective<any, any>, "[rxapOptionsFromMethod]", never, { "parameters": { "alias": "rxapOptionsFromMethodParameters"; "required": false; }; "resetOnChange": { "alias": "rxapOptionsFromMethodResetOnChange"; "required": false; }; }, {}, never, never, true, never>;
}
