import { MDCFoundation } from '@material/base';
export declare abstract class MdcComponent<FoundationType extends MDCFoundation> {
    root: HTMLElement;
    constructor(root: HTMLElement);
    foundation?: FoundationType;
    continueAttaching: boolean;
    initialised: Promise<unknown>;
    protected initialisedResolve: (value?: unknown) => void;
    private createInitiliasedPromise;
    initialise(): Promise<void>;
    initialSyncWithDOM(): void;
    attached(): Promise<void>;
    destroy(): void;
    detached(): void;
    abstract getDefaultFoundation(): FoundationType;
    listen(evtType: string, handler: any, options?: AddEventListenerOptions | boolean): void;
    unlisten(evtType: string, handler: any, options?: AddEventListenerOptions | boolean): void;
    /**
     * @hidden
     * Fires a cross-browser-compatible custom event from the component root of the given type, with the given data.
     */
    emit<T>(evtType: string, evtData: T, shouldBubble?: boolean): void;
}
