interface Nested { (key: string, ...args: Args): Ret; has(key: string): boolean; map: Map; } type ExtractArgs = T[keyof T] extends (...args: infer A) => any ? A : any[]; interface DurableState> { (key?: K, ...args: Args): R; (target?: T, ext?: T[keyof T], ...args: Args): R; } type MutableState> = T & { (key?: K, fun?: T[K]): MutableState; (target?: T, ext?: any): MutableState; }; type EventState> = T & { (key?: keyof T, fun?: T[keyof T]): EventState; (target?: Partial): EventState; }; type NestedFun = Fun<[key: string, ...args: Args], Ret>; type DurableFun & any> = Fun<[key: string, ...args: Args]>; type EventFun> = Fun<[...args: Args], EventState>; type Fun = (...args: Args) => Ret; type OverloadedArgs unknown> = T extends { (...args: infer A1): any; (...args: infer A2): any; } ? A1 | A2 : Parameters; type DurableArgs = OverloadedArgs>; type MutableArgs = OverloadedArgs>; type EventArgs = OverloadedArgs]; }>>; type RefEvent = EventState void; mount: (target: Target) => void; clean: (target: Target) => void; target: Target; }>; declare function nested(init: NestedFun): Nested; declare const durable: (fun: DurableFun, ret?: Ret) => DurableState Ret | /*elided*/ any : Ret>; declare const mutable: (...args: MutableArgs | []) => MutableState; declare function event(...args: EventArgs | []): EventState; declare const useOnce: (fun: () => T) => T; declare const useMutable: (...args: MutableArgs) => MutableState>; declare const useEvent: (...args: MutableArgs) => EventState; declare const useRefEvent: (...args: MutableArgs) => RefEvent; export { type DurableArgs, type DurableFun, type DurableState, type EventArgs, type EventFun, type EventState, type ExtractArgs, type Fun, type MutableArgs, type MutableState, type Nested, type NestedFun, type OverloadedArgs, type RefEvent, useEvent as default, durable, event, mutable, nested, useEvent, useMutable, useOnce, useRefEvent };