export interface Context { init: (initialValue: Initial) => T | Promise; teardown?: (context: T) => void | Promise; } export type ExtractContextTypes = C extends Context ? { value: T; init: I; } : never; export type ContextValues>> = { [K in keyof T]: ExtractContextTypes['value']; }; export declare function contextMap>>(base?: T): ContextMap>; export interface ContextMap extends Context { thenSet(name: N, generator: (dependencies: T) => Context): ContextMap>; } export declare function use(context: Context, dependentContext: Context): Context; export declare function teardownBehaviorContexts(): Promise; export declare function behaviorContext(context: Context): Context;