type Ctx = Record; type Paths = T extends object ? { [K in keyof T]: [K] | [K, ...Paths]; }[keyof T] : never; type PathValue = P extends [infer First, ...infer Rest] ? First extends keyof T ? Rest['length'] extends 0 ? T[First] : PathValue : never : never; declare class Context { #private; constructor(context: T); set

>(path: P extends any[] ? P : never, value: PathValue): void; set(newContext: T): void; get(): T; /** silently swap the context */ swap(newContext: T): void; subscribe: (listener: (context: T) => void) => () => boolean; setPromptContextMapper(promptMapper: (ctx: T) => object): void; getPromptContextMapper(): (ctx: T) => object; } /** * @deprecated Use the analog from @recombine-ai/bosun-lib instead. */ export declare function createContext(context: T): Context; type Public = { [P in keyof T]: T[P]; }; type PublicContext = Public>; /** * @deprecated Use the analog from @recombine-ai/bosun-lib instead. */ export type { PublicContext as Context }; //# sourceMappingURL=context.d.ts.map