import { ProviderToken } from '@angular/core';
import { FormDefinition } from '@rxap/forms';
import { Method } from '@rxap/pattern';
export declare const RXAP_USE_METHOD = "rxap/form-system/method/use";
export type MethodParameterAdapterFunction<Source = unknown, Target = unknown> = (parameter: Source) => Target;
export type MethodResultAdapterFunction<Source = unknown, Target = unknown> = (result: Source) => Target;
export interface UseMethodConfig<ReturnTypeTarget = any, ParameterSource = any, ReturnTypeSource = any, ParameterTarget = any> {
    adapter?: {
        parameter?: MethodParameterAdapterFunction<ParameterSource, ParameterTarget>;
        result?: MethodResultAdapterFunction<ReturnTypeSource, ReturnTypeTarget>;
    };
}
export declare function UseMethod(method: ProviderToken<Method>, name: string, config?: UseMethodConfig): (target: any, propertyKey: string) => void;
export interface UseMethodDefinition<ReturnType = unknown, Parameter = unknown, Config extends UseMethodConfig<ReturnType, Parameter> = UseMethodConfig<ReturnType, Parameter>> {
    method: ProviderToken<Method<ReturnType, Parameter>>;
    config?: Config;
}
export declare class ExtractMethodsMixin {
    protected extractMethods(formDefinition: FormDefinition, controlId: string): Map<string, UseMethodDefinition>;
}
