import { type AsyncContextStorage } from "./async-context.js"; export type ReadonlyAcontext = { readonly name: string; get(): T; getOrNull(): T | null; getOrElse(else_fn: () => TElse): T | TElse; }; export type Acontext = ReadonlyAcontext & { readonly default?: () => T; readonly storage: AsyncContextStorage<{ value: T; }>; run(value: T, cb: () => Promise): Promise; asReadonly(): ReadonlyAcontext; }; export declare const createAcontext: (name: string, default_fn?: Acontext["default"]) => Acontext; type AContextValue = T extends Acontext ? R : never; type AContextsValues> = T extends [] ? [] : T extends [infer Head, ...infer Tail] ? [AContextValue, ...AContextsValues] : T extends Array ? AContextValue[] : never; export declare const useAcontexts: >>(ctxs: ACS) => (values: AContextsValues, run: () => Promise) => Promise; export declare class AcontextMap { #private; set>(context: T, value: AContextValue): this; get(context: Acontext): any; has(context: Acontext): boolean; run(runner: () => Promise): Promise; } export {}; //# sourceMappingURL=acontext.d.ts.map