declare const EC: unique symbol;
interface Context {
    id: symbol;
    initFn: Function;
}
type WalkableNode = Node & {
    host?: WalkableNode;
    [EC]?: any;
};
export declare function createContext(initFn: Function): Context;
export declare function provide(context: Context, value: any, element?: WalkableNode): any;
export declare function consume(context: Context, element?: HTMLElement & import("./utils").ICustomElement): any;
export declare function withProvider(context: Context, value: any): (ComponentType: import("./utils").ComponentType<any>) => import("./utils").ComponentType<any>;
export declare function withConsumer(context: Context, key: string): (ComponentType: import("./utils").ComponentType<any>) => import("./utils").ComponentType<any>;
export {};
