import type { InjectionKey } from 'vue'; export interface ContextConstructor { (this: void, ...params: TParams): TContext; } export interface ContextDefinition { readonly name: string; readonly setup: ContextConstructor; readonly symbol: InjectionKey; } export type ContextOf = T extends ContextDefinition ? TContext : never; export type ContextParams = T extends ContextDefinition ? TParams : never; export declare function defineContext(name: string): ContextDefinition<[context: TContext], TContext>; export declare function defineContext(name: string, context: ContextConstructor): ContextDefinition; export declare function provideContext(context: ContextDefinition, ...params: TParams): TContext; export declare function injectContext(context: ContextDefinition): TContext; export declare function injectContext(context: ContextDefinition, opts: { optional: boolean; }): TContext | null;