import { css, Async, IDisposable, EventGroup } from '@uifabric-vue/utilities';
import Vue from 'vue';
import { ITheme } from '@uifabric/styling';
export default abstract class BaseComponent<TProps = {}, TState = {}> extends Vue {
    $props: TProps;
    readonly className: string;
    readonly styles: any;
    componentRef: HTMLElement | null;
    css: typeof css;
    private __async;
    private __events;
    private __disposables;
    protected state: TState;
    protected props: TProps;
    theme: ITheme;
    created(): void;
    /**
     * When the component has mounted, update the componentRef.
     */
    mounted(): void;
    /**
     * If we have disposables, dispose them automatically on unmount.
     */
    beforeDestroy(): void;
    protected get uid(): number;
    protected get classNames(): any;
    /**
     * Allows subclasses to push things to this._disposables to be auto disposed.
     */
    protected get _disposables(): IDisposable[];
    /**
     * Gets the async instance associated with the component, created on demand. The async instance gives
     * subclasses a way to execute setTimeout/setInterval async calls safely, where the callbacks
     * will be cleared/ignored automatically after unmounting. The helpers within the async object also
     * preserve the this pointer so that you don't need to "bind" the callbacks.
     */
    protected get _async(): Async;
    /**
     * Gets the event group instance assocaited with the component, created on demand. The event instance
     * provides on/off methods for listening to DOM (or regular javascript object) events. The event callbacks
     * will be automatically disconnected after unmounting. The helpers within the events object also
     * preserve the this reference so that you don't need to "bind" the callbacks.
     */
    protected get events(): EventGroup;
    /**
     * Updates the component's current state.
     *
     * @returns The updated state object.
     */
    protected setState(newState: TState): TState;
}
//# sourceMappingURL=BaseComponent.d.ts.map