import { ThemeProperties as CoreThemeProperties } from '@dojo/framework/core/middleware/theme';
import { ThemeWithVariant, ClassNames, Theme } from '@dojo/framework/core/interfaces';
export declare const THEME_KEY = " _key";
export interface ThemeProperties extends CoreThemeProperties {
}
export declare const theme: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties & {
    variant?: "default" | "inherit" | undefined;
} & CoreThemeProperties, import("@dojo/framework/core/interfaces").DNode<any>[], {
    coreTheme: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties & CoreThemeProperties, import("@dojo/framework/core/interfaces").DNode<any>[], {
        invalidator: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties, import("@dojo/framework/core/interfaces").DNode<any>[], import("@dojo/framework/core/interfaces").MiddlewareMap<() => {
            api: {};
            properties: {};
        }>, () => void>;
        icache: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties, import("@dojo/framework/core/interfaces").DNode<any>[], {
            invalidator: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties, import("@dojo/framework/core/interfaces").DNode<any>[], import("@dojo/framework/core/interfaces").MiddlewareMap<() => {
                api: {};
                properties: {};
            }>, () => void>;
            destroy: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties, import("@dojo/framework/core/interfaces").DNode<any>[], import("@dojo/framework/core/interfaces").MiddlewareMap<() => {
                api: {};
                properties: {};
            }>, (destroyFunction: () => void) => void>;
        }, import("@dojo/framework/core/middleware/icache").ICacheResult<void>>;
        diffProperty: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties, import("@dojo/framework/core/interfaces").DNode<any>[], import("@dojo/framework/core/interfaces").MiddlewareMap<() => {
            api: {};
            properties: {};
        }>, {
            <T extends (...args: any) => any, K extends keyof ReturnType<T>>(property: K, properties: T, diff: (current: ReturnType<T>, next: ReturnType<T>) => void | ReturnType<T>[K]): void;
            (propertyName: string, diff: (current: any, next: any) => void): void;
        }>;
        injector: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties, import("@dojo/framework/core/interfaces").DNode<any>[], {
            getRegistry: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties, import("@dojo/framework/core/interfaces").DNode<any>[], import("@dojo/framework/core/interfaces").MiddlewareMap<() => {
                api: {};
                properties: {};
            }>, () => import("@dojo/framework/core/RegistryHandler").RegistryHandler | null>;
            invalidator: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties, import("@dojo/framework/core/interfaces").DNode<any>[], import("@dojo/framework/core/interfaces").MiddlewareMap<() => {
                api: {};
                properties: {};
            }>, () => void>;
            destroy: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties, import("@dojo/framework/core/interfaces").DNode<any>[], import("@dojo/framework/core/interfaces").MiddlewareMap<() => {
                api: {};
                properties: {};
            }>, (destroyFunction: () => void) => void>;
        }, {
            subscribe(label: string | symbol, callback?: Function | undefined): (() => void) | undefined;
            get<T>(label: string | symbol): T | null;
        }>;
        getRegistry: import("@dojo/framework/core/interfaces").MiddlewareResultFactory<import("@dojo/framework/core/interfaces").WidgetProperties, import("@dojo/framework/core/interfaces").DNode<any>[], import("@dojo/framework/core/interfaces").MiddlewareMap<() => {
            api: {};
            properties: {};
        }>, () => import("@dojo/framework/core/RegistryHandler").RegistryHandler | null>;
    }, {
        classes<T extends ClassNames>(css: T): T;
        variant(): string | undefined;
        set: {
            (theme: Theme): void;
            <T extends import("@dojo/framework/core/interfaces").ThemeWithVariants>(theme: T, variant?: import("@dojo/framework/core/interfaces").NamedVariant | keyof T["variants"] | undefined): void;
        };
        get(): import("@dojo/framework/core/ThemeInjector").ThemeWithVariantsInjectorPayload | import("@dojo/framework/core/ThemeInjector").ThemeInjectorPayload | undefined;
    }>;
}, {
    compose: <T extends ClassNames, B extends ClassNames>(baseCss: B, css: T, prefix?: string | undefined) => Theme | ThemeWithVariant;
    variant: () => string | undefined;
    get: () => import("@dojo/framework/core/ThemeInjector").ThemeWithVariantsInjectorPayload | import("@dojo/framework/core/ThemeInjector").ThemeInjectorPayload | undefined;
    set: {
        (theme: Theme): void;
        <T extends import("@dojo/framework/core/interfaces").ThemeWithVariants>(theme: T, variant?: import("@dojo/framework/core/interfaces").NamedVariant | keyof T["variants"] | undefined): void;
    };
    classes: <T extends ClassNames>(css: T) => T;
}>;
export default theme;
