/// <reference types="react" />
import * as React from 'react';
import { IRefObject } from '../Utilities';
/**
 * BaseProps interface.
 *
 * @public
 */
export interface IBaseProps<T = any> {
    componentRef?: IRefObject<T>;
}
/**
 * BaseComponent class, which provides basic helpers for all components.
 *
 * @public
 */
export declare class BaseComponentMin<TComponentProps extends IBaseProps = {}, TState = {}> extends React.Component<TComponentProps, TState> {
    /**
     * Controls whether the componentRef prop will be resolved by this component instance. If you are
     * implementing a passthrough (higher-order component), you would set this to false and pass through
     * the props to the inner component, allowing it to resolve the componentRef.
     */
    protected _skipComponentRefResolution: boolean;
    /**
     * BaseComponent constructor
     * @param props - The props for the component.
     * @param context - The context for the component.
     */
    constructor(props: TComponentProps, context?: any);
    /**
     * When the component will receive props, make sure the componentRef is updated.
     */
    componentWillReceiveProps(newProps: Readonly<TComponentProps>, newContext: any): void;
    /**
     * When the component has mounted, update the componentRef.
     */
    componentDidMount(): void;
    /**
     * If we have disposables, dispose them automatically on unmount.
     */
    componentWillUnmount(): void;
    /**
     * Updates the componentRef (by calling it with "this" when necessary.)
     */
    protected _updateComponentRef(currentProps: IBaseProps, newProps?: IBaseProps): void;
    private _setComponentRef<TRefInterface>(ref, value);
}
