import { DurationStr } from "./TimeDurations"; export declare type LiteralOrProvider = T | Provider; export declare type Provider = () => T; export interface IProvider { get(): T; } export declare class Providers { static toValue(value: LiteralOrProvider): T; static toFunction(provider: IProvider): () => T; static toInterface(provider: Provider | T): IProvider; static of(value: T): Provider; static memoize(provider: Provider): Provider; static cached(duration: DurationStr, provider: Provider): Provider; } export declare type AsyncProvider = () => Promise; export declare class AsyncProviders { static of(value: T): AsyncProvider; static memoize(provider: AsyncProvider): AsyncProvider; static memoize1(provider: (arg0: A) => Promise): (arg0: A) => Promise; }