import { bindingMode, ObserverLocator, InternalPropertyObserver } from 'aurelia-framework';
export type GetElementObserver = (obj: Element, propertyName: string, observerLocator: ObserverLocator, descriptor?: PropertyDescriptor | null) => InternalPropertyObserver | null;
export interface MdcElementObserverAdapter {
    tagName: string;
    properties: Record<string, MdcElementPropertyObserver>;
}
export interface MdcElementPropertyObserver {
    defaultBindingMode: bindingMode;
    getObserver: GetElementObserver;
}
export declare class MdcComponentAdapters {
    private observerLocator;
    private adaptersCreated;
    private adapters;
    private bindingModeIntercepted;
    constructor(observerLocator: ObserverLocator);
    private createAdapter;
    private getOrCreateMdcElementAdapters;
    private interceptDetermineDefaultBindingMode;
    addMdcElementObserverAdapter(tagName: string, properties: Record<string, MdcElementPropertyObserver>): void;
    registerMdcElementConfig(observerAdapter: MdcElementObserverAdapter): void;
}
