// Type definitions for @dyna-grid/core v1.0.5
// Project: 
// Definitions by: zhangkun <>
import { IComponent } from "../../interfaces/iComponent";
import { BeanStub } from "../../context/beanStub";
export declare enum RegisteredComponentSource {
    DEFAULT = 0,
    REGISTERED = 1
}
/**
 * B the business interface (ie IHeader)
 * A the dyGridComponent interface (ie IHeaderComp). The final object acceptable by dyna-grid
 */
export interface RegisteredComponent<A extends IComponent<any> & B, B> {
    component: RegisteredComponentInput<A, B>;
    componentFromFramework: boolean;
    source: RegisteredComponentSource;
}
export declare type RegisteredComponentInput<A extends IComponent<any> & B, B> = DyGridRegisteredComponentInput<A> | {
    new (): B;
};
export declare type DyGridRegisteredComponentInput<A extends IComponent<any>> = DyGridComponentFunctionInput | {
    new (): A;
};
export declare type DyGridComponentFunctionInput = (params: any) => string | HTMLElement;
export interface DeprecatedComponentName {
    propertyHolder: string;
    newComponentName: string;
}
export declare class UserComponentRegistry extends BeanStub {
    private gridOptions;
    private dyGridDefaults;
    private dyDeprecatedNames;
    private jsComponents;
    private frameworkComponents;
    private init;
    registerDefaultComponent<A extends IComponent<any>>(rawName: string, component: DyGridRegisteredComponentInput<A>): void;
    registerComponent<A extends IComponent<any>>(rawName: string, component: DyGridRegisteredComponentInput<A>): void;
    /**
     * B the business interface (ie IHeader)
     * A the dyGridComponent interface (ie IHeaderComp). The final object acceptable by dyna-grid
     */
    registerFwComponent<A extends IComponent<any> & B, B>(rawName: string, component: {
        new (): IComponent<B>;
    }): void;
    /**
     * B the business interface (ie IHeader)
     * A the dyGridComponent interface (ie IHeaderComp). The final object acceptable by dyna-grid
     */
    retrieve<A extends IComponent<any> & B, B>(rawName: string): RegisteredComponent<A, B> | null;
    private translateIfDeprecated;
}
