///
import type { wide_ctx_T } from '../be_/index.js'
export declare function memo_(
def:memo_def_T,
add_def_a1?:rmemo_add_def_T[]
):memo_T
export declare function sig_(
init_val:val_T,
add_def_a1?:rmemo_add_def_T[]
):sig_T
export declare function memosig_(
def:memo_def_T,
add_def_a1?:rmemo_add_def_T[]
):sig_T
export declare function lock_memosig_(
def:memo_def_T,
add_def_a1?:rmemo_add_def_T[]
):sig_T
export declare function memo__bind(
fn:(...arg_a:A)=>R
):memo__bind_T
export type memo__bind_T =
((...arg_a:A)=>R)&{
memo_(
def:memo_def_T,
add_def_a1?:rmemo_add_def_T[]
):memo_T
}
export declare function rmemo__on(rmemo:rmemo_T, off_fn?:(rmemo:rmemo_T)=>unknown):void
export declare function rmemo__off(rmemo:rmemo_T):void
export declare function rmemo__off__add(rmemo:rmemo_T, off_fn:(rmemo:rmemo_T)=>unknown):void
export declare function rmemo__add(
rmemo:rmemo_T,
listener:(sig:sig_T)=>listener_val_T
):()=>void
export declare function rmemo__unset(rmemo:rmemo_T):void
export type rmemo_T = memo_T|sig_T|lock_memosig_T
export type rmemolike_T = (()=>val_T)&E
export type circular_rmemo_T =
(circular_memo_T|circular_sig_T|circular_lock_memosig_T)&E
export type memo_T = (()=>val_T)&{
memo_<_val_T, E = unknown>(
def:memo_def_T<_val_T>,
add_def_a1?:rmemo_add_def_T[]
):memo_T<_val_T, E>
val:val_T
readonly a:unknown
readonly b:unknown
readonly d:unknown
readonly l:unknown
readonly r:unknown
readonly u:unknown
readonly t:unknown
}&E
interface _circular_memo_T extends memo_T<_circular_memo_T> {
}
export type circular_memo_T = _circular_memo_T&E
export type sig_T = memo_T&{
set(val:val_T):void
}
interface _circular_sig_T extends sig_T<_circular_sig_T> {
}
export type circular_sig_T = _circular_memo_T&E
export type lock_memosig_T = sig_T
interface _circular_lock_memosig_T extends lock_memosig_T<_circular_lock_memosig_T> {
}
export type circular_lock_memosig_T = _circular_lock_memosig_T&E
export type rmemo_val_T = sig_T extends { ():infer val_T }
? val_T
: unknown
export type memo_def_T = (sig:sig_T)=>val_T
export type rmemo_a_T = unknown[]
export type rmemo_add_def_T = (sig:sig_T)=>unknown
export type rmemo_r_T = WeakRef&{ readonly d?: ()=>rmemo_T }>
export type be_rmemo_add_def_T<
val_T,
ns_T extends string,
E = unknown,
ctx_T extends wide_ctx_T = wide_ctx_T,
> = (ctx:ctx_T, sig:sig_T)=>unknown